/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { // TODO: Add your update logic here _inputState.Update(); Global.Camera.HandleInput(_inputState, PlayerIndex.One); if (_inputState.IsExitGame(PlayerIndex.One)) { Exit(); } else if (_inputState.IsSpace(PlayerIndex.One)) { if (Global.GameState == GameStates.PlayerTurn) { Global.GameState = GameStates.Debugging; } else if (Global.GameState == GameStates.Debugging) { Global.GameState = GameStates.PlayerTurn; } } else { if (Global.GameState == GameStates.PlayerTurn && _player.HandleInput(_inputState, _map)) { UpdatePlayerFieldOfView(); Global.Camera.CenterOn(_map.GetCell(_player.X, _player.Y)); Global.GameState = GameStates.EnemyTurn; } if (Global.GameState == GameStates.EnemyTurn) { foreach (var enemy in _aggressiveEnemies) { enemy.Update(); } Global.GameState = GameStates.PlayerTurn; } } base.Update(gameTime); }