/// <summary> /// Handler for all keyboard input, actions taken depend on the Game State. /// </summary> private void HandleUserInput() { var currentGameState = _gameStateStateMachine.State; var input = _inputHandler.Listen(); // ReSharper disable once SwitchStatementMissingSomeCases, most inputs are not supported. switch (input) { case KeyCode.Space: if (currentGameState == GameState.None) { _gameStateStateMachine.Fire(GameStateTrigger.StartGame); _worldMapStateMachine.Fire(PlayerMovement.Forward); } break; case KeyCode.None: break; case KeyCode.UpArrow: if (currentGameState == GameState.Playing) { _worldMapStateMachine.Fire(PlayerMovement.Forward); } break; case KeyCode.DownArrow: if (currentGameState == GameState.Playing) { _worldMapStateMachine.Fire(PlayerMovement.Backward); } break; case KeyCode.LeftArrow: if (currentGameState == GameState.Playing) { _worldMapStateMachine.Fire(PlayerMovement.Left); } break; case KeyCode.RightArrow: if (currentGameState == GameState.Playing) { _worldMapStateMachine.Fire(PlayerMovement.Right); } break; default: var errorMessage = $"KeyCode: {input} is not supported."; throw new NotSupportedException(errorMessage); } }
public void CanTransitionStateMachineFromFifthPieceToSixthPiece() { var displayHandler = MockDisplayHandler.Object; const WorldMap worldMapPosition = WorldMap.FifthPieceHorizontalPipe; var stateMachine = new WorldMapStateMachine(worldMapPosition, displayHandler); stateMachine.Fire(PlayerMovement.Right); const WorldMap expectedWorldMapPosition = WorldMap.SixthPieceFlippedLeftAngle; var actualWorldMapPosition = stateMachine.State; Assert.Equal(expectedWorldMapPosition, actualWorldMapPosition); MockDisplayHandler.Verify(mock => mock.DisplayMessage(It.IsAny <string>()), Times.Once); }
public void CanTransitionStateMachineFromThirdPieceToFourthPiece() { var displayHandler = MockDisplayHandler.Object; const WorldMap worldMapPosition = WorldMap.ThirdPieceVerticalPipe; var stateMachine = new WorldMapStateMachine(worldMapPosition, displayHandler); stateMachine.Fire(PlayerMovement.Forward); const WorldMap expectedWorldMapPosition = WorldMap.FourthPieceVerticalT; var actualWorldMapPosition = stateMachine.State; Assert.Equal(expectedWorldMapPosition, actualWorldMapPosition); MockDisplayHandler.Verify(mock => mock.DisplayMessage(It.IsAny <string>()), Times.Once); }
public void CanTransitionStateMachineFromEleventhPieceToTwelfthPiece() { var displayHandler = MockDisplayHandler.Object; const WorldMap worldMapPosition = WorldMap.EleventhPieceFlippedRightAngle; var stateMachine = new WorldMapStateMachine(worldMapPosition, displayHandler); stateMachine.Fire(PlayerMovement.Forward); const WorldMap expectedWorldMapPosition = WorldMap.TwelfthPieceExit; var actualWorldMapPosition = stateMachine.State; Assert.Equal(expectedWorldMapPosition, actualWorldMapPosition); MockDisplayHandler.Verify(mock => mock.DisplayMessage(It.IsAny <string>()), Times.Once); }