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); } }
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); }