public bool StartGame(Action <long> onPreparationEnd) { lock (lobbyLock) { if (players.Count < 3) { return(false); } var callPhaseDuration = GetCallPhaseDuration(GameMode); var turnPhaseDuration = GetTurnPhaseDuration(GameMode); var preparationPhaseDuration = 10000; List <int> gameScores; if (players.Count == 2) { gameScores = new List <int>() { 1, -1 }; } else if (players.Count == 3) { gameScores = new List <int>() { 1, 0, -1 }; } else if (players.Count == 4) { gameScores = new List <int>() { 2, 1, 0, -1 }; } else { gameScores = new List <int>() { }; } GameLogicController = new GameLogicController(); GameLogicController.StartGame( players, GameLobbyID, callPhaseDuration, turnPhaseDuration, preparationPhaseDuration, onPreparationEnd, gameScores); return(true); } }