public static void Update(GameTime gameTime) { if (mouseSqrCoords != null) { MouseScreenPos = new Vector2(mouseSqrCoords.x * SQUARESIZE, mouseSqrCoords.y * SQUARESIZE + BORDERTOP); } m_manPower = TroopListener.TroopList.Count(); UiSideScreen.Update(); UiTopScreen.Update(); QuestionPopUpManager.Update(); WaveManager.Update(gameTime); TowerManager.Update(); TroopManager.Update(gameTime); EffectManager.Update(gameTime); PopUpTextManager.Update(gameTime); PopUpNotificationManager.Update(gameTime); MessageBoxManager.Update(gameTime); if (BaseHealth <= 0) { if (EffectManager.EffectList.Count < 10) { for (int i = 0; i < 1; i++) { EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, new Vector2(ENDPOINT.x * SQUARESIZE + rnd.Next(-30, 60), ENDPOINT.y * SQUARESIZE + BORDERTOP + rnd.Next(-30, 60)), true); } } GameState = GameStates.LoseScreen; } if (GameState == GameStates.LoseScreen && SaveData) { SaveData = false; Scores.AllTimeKills += WaveManager.EnemiesKilled; if (Scores.HighestWaveKills <= WaveManager.EnemiesKilled && Scores.HighestWave <= WaveManager.WaveNumber) { Scores.HighestWaveKills = WaveManager.EnemiesKilled; Scores.HighestWave = WaveManager.WaveNumber; } Scores.SaveData(Scores); } if (GameState == GameStates.PlayScreen && !SaveData) { SaveData = true; } if (HelpMode) { HelpDialogManager.Update(); } }
public static void Update() { foreach (Tower tower in Towers) { if (tower.Health <= 0) { // DEADED BuildManager.RemoveTowerFromSquare(tower); DestroyTower(tower.TowerID); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, tower.Position - new Vector2(Art.TowerGun[0].Width / 2, Art.TowerGun[0].Height / 2), true); GameManager.grid.gridSquares[(int)tower.towerCoords.x, (int)tower.towerCoords.y].sqrEdited = true; break; } else if (GridManager.HasNeighbour(Squares.BuildingType.Trench, tower.towerCoords)) { tower.Update(); } } }
/// <summary> /// Updates the enemies and checks for destroyed enemies /// </summary> public static void Update(GameTime gt) { foreach (Enemy Enemy in Enemies) { if (Enemy.IsDestroyed) { WaveManager.WaveEnemiesUsed++; if (Enemy.hitPoints <= 0) // check if it was destroyed by means of towers { GameManager.EnemyWasDestroyed(Enemy.EnemyType); // resource acquisition if (Enemy.EnemyType == "Helicopter") { EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.Helicopter.Width / 2, Art.Helicopter.Height / 2), true); } if (Enemy.EnemyType == "Transport") { for (float i = 0; i < 4; i++) { WaveManager.WaveEnemiesUsed--; SpawnEnemy("Soldier", Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4)); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.Transport.Width / 2, Art.Transport.Height / 2), true); } } else if (Enemy.EnemyType == "Tank") { for (float i = 0; i < 2; i++) { WaveManager.WaveEnemiesUsed--; SpawnEnemy("Soldier", Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4)); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.TankBottom.Width / 2, Art.TankBottom.Height / 2), true); } } else if (Enemy.EnemyType == "Jeep") { for (float i = 0; i < 1; i++) { WaveManager.WaveEnemiesUsed--; SpawnEnemy("Soldier", Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4)); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.JeepBottom.Width / 2, Art.JeepBottom.Height / 2), true); } } else if (Enemy.EnemyType == "Soldier") { EffectManager.EffectCall(EffectManager.EffectEnums.Blood, Enemy.ScreenPos, false); } } DestroyEnemy(Enemy.EnemyID, Enemy.EnemyType); break; } else { Enemy.Update(GameManager.grid.gridStatus, gt); //updates the enemy } } foreach (Projectile proj in TankTurret.EnemyProjectiles) //updates the projectiles of enemy { proj.Update(); } }
/// <summary> /// Updates the enemies and checks for destroyed enemies /// </summary> public static void Update(GameTime gt) { if (WaveManager.WaveNumber > 10) { SpawnSoldierString = "SoldierBlue"; } if (WaveManager.WaveNumber > 20) { SpawnSoldierString = "SoldierRed"; } foreach (Enemy Enemy in Enemies) { if (Enemy.IsDestroyed) { if (Enemy.hitPoints <= 0) // check if it was destroyed by means of towers { WaveManager.EnemiesKilled++; GameManager.EnemyWasDestroyed(Enemy.EnemyType); // resource acquisition if (Enemy.EnemyType == "Helicopter") { EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2((Art.Helicopter.Width / 4) / 2, Art.Helicopter.Height / 2), true); Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f); } if (Enemy.EnemyType == "Transport") { for (float i = 0; i < 4; i++) { SpawnEnemy(SpawnSoldierString, Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4)); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.Transport.Width / 2, Art.Transport.Height / 2), true); } Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f); } else if (Enemy.EnemyType == "Tank") { for (float i = 0; i < 2; i++) { SpawnEnemy(SpawnSoldierString, Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4)); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.TankBottom.Width / 2, Art.TankBottom.Height / 2), true); } Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f); } else if (Enemy.EnemyType == "Jeep") { for (float i = 0; i < 1; i++) { SpawnEnemy(SpawnSoldierString, Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4)); EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.JeepBottom.Width / 2, Art.JeepBottom.Height / 2), true); } Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f); } else if (Enemy.EnemyType == "Soldier") { EffectManager.EffectCall(EffectManager.EffectEnums.Blood, Enemy.ScreenPos + new Vector2(GameManager.rnd.Next(-5, 6), GameManager.rnd.Next(-5, 6)), false); if (GameManager.rnd.Next(1, 100) < 25) { Sound.WilhelmScream.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f); } } } //DestroyEnemy(Enemy, Enemy.EnemyType, Enemy.EnemyID); EnemiesToRemove.Add(Enemy); } if (float.IsNaN(Enemy.enemyVect.X) || float.IsNaN(Enemy.enemyVect.Y)) // This needs testing... { //DestroyEnemy(Enemy, Enemy.EnemyType, Enemy.EnemyID); EnemiesToRemove.Add(Enemy); //WaveManager.WaveEnemiesUsed++; } else { Enemy.Update(GameManager.grid.gridStatus, gt); //updates the enemy } } foreach (Projectile proj in TankTurret.EnemyProjectiles) //updates the projectiles of enemy { proj.Update(); } // Remove Projectiles after lifetime. for (int i = 0; i < TankTurret.EnemyProjectiles.Count(); i++) { if (TankTurret.EnemyProjectiles[i].TimeSinceSpawn > TankTurret.EnemyProjectiles[i].Lifetime) { TankTurret.EnemyProjectiles.RemoveAt(i); } } foreach (Enemy enemy in EnemiesToAdd) { Enemies.Add(enemy); } foreach (Enemy enemy in EnemiesToRemove) { DestroyEnemy(enemy, enemy.EnemyType, enemy.EnemyID); } EnemiesToAdd.Clear(); EnemiesToRemove.Clear(); }