void AI::enemy2Update(Enemy &enemy, const float dt) { //this will represent the max distance the enemy can moe up and down float maxAmplitude; //create a vector to change for the new enemy position D3DXVECTOR3 tempVel = enemy.getPosition(); //increment the y-position to follow a sine curve tempVel.y = maxAmplitude * sin(dt * 0.5f * PI); //increment the Xposition by the EnemySpeed tempVel.x = tempVel.x += ENEMY_SPEED; //normalize the vector D3DXVec3Normalize(&tempVel, &tempVel); tempVel *= ENEMY_SPEED; enemy.setVelocity(tempVel); // Check if enemy should fire a missile float missFireRate = enemy.getMissileFireRate(); enemy.setMissileFireRate(missFireRate -= dt); if (missFireRate <= 0.0f) { enemy.fireMissile(D3DXVECTOR3(0.0f, -5.0f, 0.0f)); // TODO: Modify for a fixed missile speed constant enemy.setMissileFireRate(ENEMY_MISSILE_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) { }*/ } }