Beispiel #1
0
        public Task GameLobbyStartGame(long gameLobbyID)
        {
            return(Task.Run(() =>
            {
                var gameLobby = gameLobbyService.GetGameLobby(gameLobbyID);
                if (gameLobby == null)
                {
                    return;
                }
                gameLobby.UseLobbyLock(() =>
                {
                    if (gameLobby.HasUser(Context.User))
                    {
                        var gameStarted = gameLobby.StartGame(OnEndTurn);
                        if (!gameStarted)
                        {
                            return;
                        }

                        Parallel.ForEach(gameLobby.GetUsers(), (user) =>
                        {
                            var connection = userConnectionsService.GameConnectionService.GetConnection(user);
                            var gameState = gameLobby.GameLogicController.GetGameState(user);

                            var apiObject = new GameLobbyStartGame
                            {
                                GameState = new GetGameState(gameState)
                            };
                            Clients.Client(connection).GameLobbyStartGame(apiObject);
                        });
                    }
                });
            }));
        }
 public static Task GameLobbyStartGame(this IClientProxy hubConnection, GameLobbyStartGame apiObject)
 {
     return(hubConnection.SendAsync(GameHubApiKeys.GameLobbyStartGame, apiObject));
 }