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