public void Update(GameTime gameTime, List <Enemy> enemies) { foreach (Tower tower in towers) { tower.Update(gameTime); if (tower is ArrowTower) { if (tower.Target == null || tower.Target.IsDead) { tower.Target = tower.GetClosestEnemy(enemies); } if (tower.Target != null) { tower.Attack(tower.Target); if (tower.Target.AtEnd) { tower.Target = null; } } } else if (tower is SpikeTower) { SpikeTower spike = tower as SpikeTower; spike.Targets.Clear(); spike.Targets.AddRange(spike.GetEnemies(enemies)); spike.Attack(); } else if (tower is OneandOneTower) { OneandOneTower oneandone = tower as OneandOneTower; oneandone.UpdateSplashDamage(enemies, gameTime); if (tower.Target == null || tower.Target.IsDead) { tower.Target = tower.GetClosestEnemy(enemies); } if (tower.Target != null) { tower.Attack(tower.Target); if (tower.Target.AtEnd) { tower.Target = null; } } } else if (tower is ofLoveTower) { break; /* * if (tower.Target == null || tower.Target.IsDead) * tower.Target = tower.GetClosestEnemy(enemies); * if (tower.Target != null) * { * tower.Attack(tower.Target); * if (tower.Target.AtEnd) * tower.Target = null; * }*/ } else { BombTower bomb = tower as BombTower; bomb.UpdateSplashDamage(enemies, gameTime); if (tower.Target == null || tower.Target.IsDead) { tower.Target = tower.GetClosestEnemy(enemies); } if (tower.Target != null) { tower.Attack(tower.Target); if (tower.Target.AtEnd) { tower.Target = null; } } } } }