private void StartNewGame(Player invitee, Player inviter) { var blackPlayer = new BlackPlayer(inviter.Name); var whitePlayer = new WhitePlayer(invitee.Name); var game = CreateNewGame(blackPlayer); var state = JoinGame(game.GameId, whitePlayer); OnGameStarted(blackPlayer, state); OnGameStarted(whitePlayer, state); }
public GameStatus JoinGame(Guid gameId, Player player) { AssertPlayerIsRegistered(player); var whitePlayer = new WhitePlayer(player.Name); var game = _activeGames[gameId]; game.JoinOpponent(whitePlayer); return(game.CurrentStatus); }
public void JoinOpponent(WhitePlayer player) { if (_whitePlayer != null) { throw new InvalidOperationException("An opponent has already joined the game"); } _whitePlayer = player; _observers.Add(player); GameState = GameState.Playing; OnPlayerJoined(); }
public GameStatus( Guid gameId, GameState gameState, Board board, DiscColor discOfNextMove, IReadOnlyList <Position> discsFlipped, Move lastValidMove, BlackPlayer blackPlayer, WhitePlayer whitePlayer ) { GameId = gameId; CurrentState = board.CurrentState; GameState = gameState; Debug.WriteLine(board); DiscOfNextMove = discOfNextMove; DiscsFlipped = discsFlipped; LastValidMove = lastValidMove; int blackPlayerScore = 0; int whitePlayerScore = 0; for (var i = 0; i < Board.EdgeSize; i++) { for (var j = 0; j < Board.EdgeSize; j++) { if (CurrentState[i, j] == -1) { blackPlayerScore += 1; } else if (CurrentState[i, j] == 1) { whitePlayerScore += 1; } } } BlackPlayerStatus = new PlayerStatus(blackPlayer.Name, blackPlayerScore); WhitePlayerStatus = new PlayerStatus(whitePlayer?.Name ?? "No player", whitePlayerScore); }