public static GameState GenerateGameState(string newGameId,
                                              int howManyPlayers,
                                              List <string> playersNicknames,
                                              string firstPlayerNickname)
    {
        string newId        = newGameId;
        var    mainDeck     = DeckGenerator.GenerateActionsDeck();
        var    animalsDeck  = DeckGenerator.GenerateAnimalsDeck();
        var    goodsDeck    = DeckGenerator.GenerateGoodsDeck();
        var    projectCards = PrepareProjectCards(mainDeck, howManyPlayers);
        var    players      = PreparePlayers(animalsDeck, goodsDeck, howManyPlayers, playersNicknames);
        var    bonuses      = PrepareAvailableBonuses(howManyPlayers);

        return(new GameState(newId,
                             players,
                             mainDeck,
                             animalsDeck,
                             goodsDeck,
                             projectCards,
                             bonuses,
                             Round.A,
                             firstPlayerNickname,
                             1,
                             players.Count,
                             false));
    }