예제 #1
0
 public void CurrentPlayerWon()
 {
     _currentState = PhutballGameStateEnum.CurrentPlayerWon;
     _playersState.Stop();
     _eventPublisher.Publish(new PhutballGameEnded());
     _eventPublisher.Publish(new PlayersStateChanged());
 }
예제 #2
0
 public void Restart()
 {
     CancelComputerMove();
     _currentState = PhutballGameStateEnum.NotStarted;
     _playersState.Stop();
     _eventPublisher.Publish(new PlayersStateChanged());
     _eventPublisher.Publish(new PhutballGameEnded());
 }
예제 #3
0
 public PhutballGameState(
     IEventPublisher eventPublisher,
     IPhutballBoard phutballBoard,
     IPlayersState playersState,
     BestMoveApplier bestMoveApplier,
     Func<IHandlePlayerMoves> handlePlayerMovesFactory)
 {
     _currentState = PhutballGameStateEnum.NotStarted;
     _eventPublisher = eventPublisher;
     _phutballBoard = phutballBoard;
     _playersState = playersState;
     _bestMoveApplier = bestMoveApplier;
     _handlePlayerMovesFactory = handlePlayerMovesFactory;
     _handlePlayerMoves = handlePlayerMovesFactory();
     _eventPublisher.Subscribe<PlayerWonEvent>((e)=> CurrentPlayerWon());
     _eventPublisher.Subscribe<PlayerOnTheMoveChanged>(OnPlayerOnTheMoveChanged);
     _eventPublisher.Subscribe<ComputerStartedMoving>((e)=> LongRunningProcess.Clear());
 }
예제 #4
0
 private void StartBoardAndPlayers()
 {
     _phutballBoard.Initialize();
     _handlePlayerMoves.WaitForPlayerMove();
     _currentState = PhutballGameStateEnum.Started;
     _eventPublisher.Publish(new PhutballGameStarted());
     _eventPublisher.Publish(new PlayersStateChanged());
     PerformMoveAsComputerIfNeeded();
 }
예제 #5
0
 protected override void Because()
 {
     _curretnState = Sut.CurrentState;
 }