Exemplo n.º 1
0
        public void AddPlayerToQueue(string connectionId)
        {
            var playingPlayer = _livePlayers.FirstOrDefault(p => p.LobbyConnectionId.Equals(connectionId));

            if (playingPlayer == null)
            {
                return;
            }

            if (_waitingPlayers.Count > 0)
            {
                var player1 = _waitingPlayers.Dequeue();
                var newGame = new BattleshipGame(player1, playingPlayer);

                _liveGames.Add(newGame);
                gameLobbyHub.Clients.Client(playingPlayer.LobbyConnectionId).SendAsync("GameStarted", newGame.GameId);
                gameLobbyHub.Clients.Client(player1.LobbyConnectionId).SendAsync("GameStarted", newGame.GameId);
            }
            else
            {
                if (_waitingPlayers.Any(p => p == playingPlayer))
                {
                    return;
                }
                _waitingPlayers.Enqueue(playingPlayer);
            }
        }
Exemplo n.º 2
0
        private void NextTurn(BattleshipGame game)
        {
            if (game.GameResult.gameFinished)
            {
                gameSessionHub.Clients.Client(game.GameResult.winner.GameSessionConnectionId).SendAsync("gameWon");
                gameSessionHub.Clients.Client(game.GameResult.looser.GameSessionConnectionId).SendAsync("gameLost");

                return;
            }

            var players = game.GetPlayers();

            gameSessionHub.Clients.Client(players.player1.GameSessionConnectionId).SendAsync("nextTurn", game.Player1Turn);
            gameSessionHub.Clients.Client(players.player2.GameSessionConnectionId).SendAsync("nextTurn", !game.Player1Turn);
        }