Beispiel #1
0
 public void CurrentPlayerWon()
 {
     _currentState = PhutballGameStateEnum.CurrentPlayerWon;
     _playersState.Stop();
     _eventPublisher.Publish(new PhutballGameEnded());
     _eventPublisher.Publish(new PlayersStateChanged());
 }
Beispiel #2
0
 public void Restart()
 {
     CancelComputerMove();
     _currentState = PhutballGameStateEnum.NotStarted;
     _playersState.Stop();
     _eventPublisher.Publish(new PlayersStateChanged());
     _eventPublisher.Publish(new PhutballGameEnded());
 }
Beispiel #3
0
 private void StartBoardAndPlayers()
 {
     _phutballBoard.Initialize();
     _handlePlayerMoves.WaitForPlayerMove();
     _currentState = PhutballGameStateEnum.Started;
     _eventPublisher.Publish(new PhutballGameStarted());
     _eventPublisher.Publish(new PlayersStateChanged());
     PerformMoveAsComputerIfNeeded();
 }
Beispiel #4
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());
 }