public override PlayerTurnSnapshot Execute(float time) { var mousePos = Camera.ScreenToWorld(InputManager.MousePosition); var cellSize = MineField.CellSize; var fieldSnapshot = MineField.CreateSnapshot(); var cmd = MineField.FlagAt((int)mousePos.X / cellSize, (int)mousePos.Y / cellSize); if (cmd != null) { OnPlayerTurn(fieldSnapshot, cmd, time); } return(cmd); }
private void HandleInput() { if (InputManager.IsMouseButtonDown(MouseButton.Middle)) { _middleMouseButtonCommand.Execute(_gameTimeHandler.SecondsElapsed); Mouse.SetCursor(MouseCursor.SizeAll); } else { Mouse.SetCursor(MouseCursor.Arrow); } if (_gameStateManager.IsPlaying || _gameStateManager.IsNewGame) { if (InputManager.WasMouseButtonReleased(MouseButton.Right)) { _rightMouseButtonCommand.Execute(_gameTimeHandler.SecondsElapsed); } if (InputManager.WasMouseButtonReleased(MouseButton.Left)) { var fieldSnapshot = _field.CreateSnapshot(); var snapshot = _leftMouseButtonCommand.Execute(_gameTimeHandler.SecondsElapsed); if (snapshot != null) { if (!_gameStateManager.IsPlaying) { _gameStateManager.CurrentState = GameState.Playing; } if (snapshot.NewCellState.IsMine && snapshot.NewCellState.IsOpen) { _gameStateManager.CurrentState = GameState.Lost; } else if (_field.FreeCellsLeft == 0) { _gameStateManager.CurrentState = GameState.Won; _playerTurnsContainer.AddTurn(fieldSnapshot, snapshot, "Won!", _gameTimeHandler.SecondsElapsed); _scoreHandler.Store("player#1", new Score(_gameTimeHandler.SecondsElapsed)); } } } } if (InputManager.WasKeyPressed(Keys.Space)) { _field.Generate(); _gameStateManager.CurrentState = GameState.NewGame; _loseColor = Color.Red * 0.01f; } if (InputManager.WasWheelScrolledUp()) { if (_camera.Zoom < 1.5f) { _camera.ZoomIn(0.05f); } } if (InputManager.WasWheelScrolledDown()) { if (_camera.Zoom > 0.3f) { _camera.ZoomOut(0.05f); } } }