/// <summary> /// Update game /// </summary> public void Update(double deltaT) { // add new game objects gameObjects.UnionWith(pendingNewGameObjects); pendingNewGameObjects.Clear(); if (keyPressed.Contains(Keys.P) && state == GameState.Play) { state = GameState.Pause; ReleaseKey(Keys.P); System.Threading.Thread.Sleep(1); } if (keyPressed.Contains(Keys.P) && state == GameState.Pause) { state = GameState.Play; ReleaseKey(Keys.P); } if (state == GameState.Play) { // Update each game object foreach (GameObject gameObject in gameObjects) { gameObject.Update(this, deltaT); } if (!PlayerShip.IsAlive()) { state = GameState.Lost; } if (!this.enemies.IsAlive()) { state = GameState.Win; } } if (state == GameState.Lost || state == GameState.Win) { if (keyPressed.Contains(Keys.Space)) { ClearGame(); InitGame(gameSize); ReleaseKey(Keys.Space); } } // remove dead objects gameObjects.RemoveWhere(gameObject => !gameObject.IsAlive()); }
/// <summary> /// Check if the game is over and update the state /// Look if the ennemy block is in the bunkers line /// Look if still ennemy alive /// Look if player still alive /// </summary> private void CheckEndGame() { foreach (var ship in enemies.EnemyShips) { if (ship.Position.Y >= bunkerPosition - 20) { playerShip.Lives = 0; } } if (!enemies.IsAlive()) { state = GameState.Win; } if (!playerShip.IsAlive()) { state = GameState.Lost; } if (state != GameState.Pause && state != GameState.Play && keyPressed.Contains(Keys.Space)) { gameObjects.Clear(); InitGame(gameSize); ReleaseKey(Keys.Space); } }