/////// This enemy behavior seeks out the player //////// /////// until they reach a set Y value at which //////// /////// point they simply fly straight. //////// void AI::enemy1Update(Enemy &enemy, GSP420::ABC *player, const float dt) { // Check if enemy Y position is higher than half the game height if (enemy.getPosition().y > 0.0f) // TODO: Modify for exact game height constant { D3DXVECTOR3 tempVel; // Get new enemy direction based on player position tempVel = player->getPosition() - enemy.getPosition(); D3DXVec3Normalize(&tempVel, &tempVel); // Multiply enemy direction by its speed to get its velocity tempVel *= ENEMY_SPEED; enemy.setVelocity(tempVel); } // Uncomment if needed //enemy.setPosition(enemy.getPosition() += enemy.getVelocity() * dt); // Check if enemy should fire a bullet float bFireRate = enemy.getBulletFireRate(); enemy.setBulletFireRate(bFireRate -= dt); if (bFireRate <= 0.0f) { enemy.fireBullet(D3DXVECTOR3(0.0f, -5.0f, 0.0f)); // TODO: Modify for a fixed bullet speed constant enemy.setBulletFireRate(ENEMY_BULLET_FR); } }
//////// Boss moves down into game screen //////// //////// then begins its attack run //////// void AI::enemyBossUpdate(Enemy &enemy, const float dt) { // Move into game screen if (enemy.getPosition() < D3DXVECTOR3(0.0f, 20.0f, 0.0f)) // TODO: Modify for constant Y position value { D3DXVECTOR3 vel = D3DXVECTOR3(0.0f, -5.0f, 0.0f); enemy.setVelocity(vel); // Uncomment if needed //enemy.setPosition(enemy.getPosition() += vel * dt); } else { // Begin attack run // Fire bullets float bFireRate = enemy.getBulletFireRate(); enemy.setBulletFireRate(bFireRate -= dt); if (bFireRate <= 0.0f) { float x = -20.0f; for (int i = 0; i < 4; i++) { enemy.fireBullet(D3DXVECTOR3(x, -20.0f, 0.0f)); x += 10.0f; } enemy.setBulletFireRate(1.0f); } // Fire missiles float missFireRate = enemy.getMissileFireRate(); enemy.setMissileFireRate(missFireRate -= dt); if (missFireRate <= 0.0f) { enemy.fireMissile(D3DXVECTOR3(0.0f, -20.0f, 0.0f)); enemy.setMissileFireRate(10.0f); } // Fire mines // Cannot specify where to drop mine // Mines are listed as a pickup, are they intended to be picked up by the player? /*float mineFireRate = enemy.getMineFireRate(); enemy.setMineFireRate(mineFireRate -= dt); if (mineFireRate <= 0.0f) { }*/ } }