protected void HandleTowerLoop() { foreach (Tower t in towers.Values) { t.Update(); Creep target; if (t.CanFire && Calculator.BestShootableCreep(creeps, t.Position, t.GetTowerStats().Range, out target)) { var proj = TowerFactory.GetTowerProjectile(t, target); target.DeathForecast += proj.Stats.Damage; projectileManager.AddProjectile(proj); } } }