public override void Update(GameTime gameTime) { _playerRespawnTimer.Update(gameTime); if (_gameOver) { _gameOverTimer.Update(gameTime); if (_gameOverTimer.Completed) { GameOverWaitFinished?.Invoke(this, null); return; } } else if (_player.IsDestroyed && _playerRespawnTimer.Completed && _shotManager.ShotCount == 0 /* && _enemyManager.EnemyCount == 0*/) { //StartGame(); SpawnPlayer(); } _starField.Update(gameTime); _asteroidManager.Update(gameTime); _player.Update(gameTime); _shotManager.Update(gameTime); _enemyManager.Update(gameTime); _pieceExplosionManager.Update(gameTime); _pointExplosionManager.Update(gameTime); // needs to come after everything has updated as this is responsible for providing // input for next Update routine _collisionEngine.Update(gameTime); }
internal State UpdatePlayerState(IRepository <IPlayer> players, IRepository <IBullet> bullets, StarField starfield, GameTime gameTime, State gameState, KeyboardState keyState) { starfield.Speed = 3; State state = gameState; //Clear dead players players.GetAll().RemoveAll(p => p.IsAlive == false); //Set gameover if (players.GetAll().All(p => p.IsAlive == false)) { state = State.GameOver; } if (keyState.IsKeyDown(Keys.P)) { state = State.Pause; } //update players players.GetAll().ForEach(p => p.Update(gameTime)); players.GetAll().ForEach(p => p.InputHandler.Move(p)); players.GetAll().ForEach(p => p.InputHandler.PlayerShoot(bullets, players, p.Id)); starfield.Update(gameTime); return(state); }
internal State UpdateSingleLoadGameMenu(ButtonFactory singleLoginButtons, StarField starfield, State gameState, GameTime gameTime) { MouseState mouseAfterLogin = Mouse.GetState(); singleLoginButtons.CreateButton(new Vector2(500, 300), State.OnePlayer, "New Game"); singleLoginButtons.CreateButton(new Vector2(500, 400), State.LoadGameMenu, "Load Game"); starfield.Update(gameTime); return(singleLoginButtons.ReturnButtonState(mouseAfterLogin, gameState)); }
internal State UpdateRegisterState(UserDbManager userDbManager, FormFactory mainMenuForms, StarField starfield, GameTime gameTime) { MouseState mouseRegister = Mouse.GetState(); userDbManager.RegisterUser(mainMenuForms.GetAllForms()); Thread.Sleep(50); starfield.Update(gameTime); mainMenuForms.EraseForms(); return(State.Menu); }
internal State UpdateLoadGameMenu(LoadButtonFactory loadButtons, SaveAndLoadDbManager databaseManager, UsersRepository usersRepository, InputHandler inputHandler, IRepository <IPlayer> players, IRepository <IEnemy> enemies, IRepository <IAsteroid> asteroids, StarField starfield, GameTime gameTime) { int gameId = 0; MouseState mouseLoadGame = Mouse.GetState(); loadButtons.CreateButtons(databaseManager.GetUserGamesId(usersRepository.GetAll())); gameId = loadButtons.ReturnGameId(mouseLoadGame); starfield.Update(gameTime); return(databaseManager.LoadGame(players, enemies, asteroids, inputHandler, usersRepository, gameId)); }
internal State UpdatePauseMenu(ButtonFactory pauseMenuButtons, State previousState, State gameState, StarField starfield, GameTime gameTime) { pauseMenuButtons.CreateButton(new Vector2(500, 300), State.SaveGame, "Save game"); pauseMenuButtons.CreateButton(new Vector2(500, 400), previousState, "Continue"); pauseMenuButtons.CreateButton(new Vector2(500, 500), State.Quit, "Quit"); MouseState pauseMouse = Mouse.GetState(); starfield.Update(gameTime); starfield.Speed = 1; return(pauseMenuButtons.ReturnButtonState(pauseMouse, gameState)); }
internal State UpdateSingleLoginMenu(FormFactory singleLoginForms, ButtonFactory singleLoginButtons, State gameState, UsersRepository usersRepository, StarField starfield, GameTime gameTime) { MouseState mouseLogin = Mouse.GetState(); singleLoginForms.UpdateForms(mouseLogin); singleLoginButtons.CreateButton(new Vector2(900, 426), State.SingleLoadGameMenu, "LogIn"); gameState = singleLoginButtons.ReturnButtonState(mouseLogin, gameState); if (gameState == State.SingleLoadGameMenu) { usersRepository.AddUser(singleLoginForms); } starfield.Update(gameTime); return(gameState); }
protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } switch (gameState) { case GameStates.TitleScreen: titleScreenTimer += (float)gameTime.ElapsedGameTime.TotalSeconds; if (titleScreenTimer >= titleScreenDelayTime) { if ((Keyboard.GetState().IsKeyDown(Keys.Space)) || (GamePad.GetState(PlayerIndex.One).Buttons.Start == ButtonState.Pressed)) { playerManager.LivesRemaining = playerStartingLives; playerManager.PlayerScore = 0; ResetGame(); gameState = GameStates.Playing; } } break; case GameStates.Playing: starField.Update(gameTime); asteroidManager.Update(gameTime); playerManager.Update(gameTime); enemyManager.Update(gameTime); explosionManager.Update(gameTime); collisionManager.CheckCollisions(); if (playerManager.Destroyed) { playerDeathTimer = 0f; enemyManager.Active = false; playerManager.LivesRemaining--; if (playerManager.LivesRemaining < 0) { gameState = GameStates.GameOver; } else { gameState = GameStates.PlayerDead; } } break; case GameStates.PlayerDead: playerDeathTimer += (float)gameTime.ElapsedGameTime.TotalSeconds; starField.Update(gameTime); asteroidManager.Update(gameTime); enemyManager.Update(gameTime); playerManager.PlayerShotManager.Update(gameTime); explosionManager.Update(gameTime); if (playerDeathTimer >= playerDeathDelayTime) { ResetGame(); gameState = GameStates.Playing; } break; case GameStates.GameOver: playerDeathTimer += (float)gameTime.ElapsedGameTime.TotalSeconds; starField.Update(gameTime); asteroidManager.Update(gameTime); enemyManager.Update(gameTime); playerManager.PlayerShotManager.Update(gameTime); explosionManager.Update(gameTime); if (playerDeathTimer >= playerDeathDelayTime) { gameState = GameStates.TitleScreen; } break; } base.Update(gameTime); }