Beispiel #1
0
 public Game()
 {
     ReserveCards = new Reserves();
     DrawPile     = new Deck(new Card[] {}, Recycle);
     CardPool     = new List <Card>();
     DiscardPile  = new List <Card>();
     Players      = new List <Player>();
 }
Beispiel #2
0
        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);
        }