public void Update() { if (Ship != null) { if ((DateTime.Now - lastSpawn).TotalMilliseconds >= SPAWN_INTERVAL) { SpawnEnemy(); } } for (int b = 0; b < Bullets.Count; b++) { Bullets[b].Update(); Bullets[b].Clear(); if (Bullets[b].IsInMap) { bool hit = false; for (int e = 0; e < Enemies.Count; e++) { if (Enemies[e].IsAtCoordinates(Bullets[b].X, Bullets[b].Y) || Enemies[e].IsAtCoordinates(Bullets[b].LastX, Bullets[b].LastY)) { hit = true; Explosions.Add(new Explosion(this, Bullets[b].X, Bullets[b].LastY)); if (Enemies[e].Hit()) { DestroyedShips++; Enemies[e].Explode(); Enemies[e].Delete(); Enemies.RemoveAt(e--); } break; } } if (hit) { Bullets.RemoveAt(b--); IncreaseScore(1); } else { Bullets[b].Redraw(); } } else { Bullets.RemoveAt(b--); } } for (int e = 0; e < Enemies.Count; e++) { Enemies[e].Update(); Enemies[e].Clear(); if (Enemies[e].IsInMap) { if (Ship != null) { bool hit = false; int y = Enemies[e].Y; foreach (int x in Enemies[e].GetXValues()) { if (Ship.IsAtCoordinates(x, y) || Ship.WasAtCoordinates(x, y)) { hit = true; break; } } if (hit) { Explosions.Add(new Explosion(this, Ship.X, Ship.Y)); Enemies[e].Explode(); Enemies[e].Delete(); Enemies.RemoveAt(e--); Ship.Explode(); Ship.Delete(); Ship = null; break; } else { Enemies[e].Redraw(); } } Enemies[e].Redraw(); } else { Enemies[e].Clear(); Enemies.RemoveAt(e--); } } for (int e = 0; e < Explosions.Count; e++) { Explosions[e].Update(); Explosions[e].Clear(); if (Explosions[e].IsFinished) { Explosions.RemoveAt(e--); } else { Explosions[e].Redraw(); } } if (Ship != null) { Ship.Update(); Ship.Clear(); Ship.Redraw(); } }