public Game() { ReserveCards = new Reserves(); DrawPile = new Deck(new Card[] {}, Recycle); CardPool = new List <Card>(); DiscardPile = new List <Card>(); Players = new List <Player>(); }
public Game(CardSet cards, IEnumerable <ICharacterDefinition> characters) { DiscardPile = new List <Card>(); CardPool = new List <Card>(); ReserveCards = new Reserves(cards.C.Flatten(), cards.B.Flatten(), cards.A.Flatten(), cards.S.Flatten()); Players = characters.Select(c => new Player(c)).ToList(); var playersCards = characters.SelectMany(c => c.InitialDeck.Flatten()) .GroupBy(c => c) .ToDictionary(g => g.Key, g => g.Count()); var initialDeck = new Dictionary <Card, int>(cards.D); foreach (var playersCard in playersCards) { if (initialDeck.ContainsKey(playersCard.Key)) { initialDeck[playersCard.Key] = initialDeck[playersCard.Key] - playersCard.Value; } } DrawPile = new Deck(initialDeck.Flatten(), Recycle); }