public GameState CreateGame() { // Create Deck var deck = _cardService.CreateDeck(_config.SuitCount, _config.RankCount); var siegeCards = _cardService.Shuffle(deck); // Draw Cards/Hands var attackerCards = new List <Card>(); var defenderCards = new List <Card>(); for (var i = 0; i < _config.HandSize; i++) { attackerCards.Add(_cardService.DrawCard(siegeCards)); defenderCards.Add(_cardService.DrawCard(siegeCards)); } // Setup State var state = new GameState() { IsAttackersTurn = true, EnablePreparation = true, OilCount = _config.OilCount, NewCards = 0, Sections = CreateSections(), SiegeCards = siegeCards, AttackerCards = attackerCards, DefenderCards = defenderCards, DiscardCards = new List <Card>(), LastEvent = GameEvent.Start, LastSection = -1, }; return(state); }