internal GlobalBoardState(EnginePlayer player1, EnginePlayer player2, Deck deck, Dictionary<Destination, Stack<Card>> discards)
        {
            CardsRemaining = deck.Count;

            Discards = new Dictionary<Destination, Card>(discards.Keys.Count);
            foreach (var destination in discards.Keys)
            {
                var cards = discards[destination];
                if (cards.Any())
                {
                    Discards.Add(destination, cards.Peek());
                }
            }

            Player1Expeditions = player1.GetExpeditions();
            Player2Expeditions = player2.GetExpeditions();
            Player1Cards = player1.Cards.ToList(); // Maybe fishy way of creating a new list
            Player2Cards = player2.Cards.ToList(); // Maybe fishy way of creating a new list
        }
Exemple #2
0
        internal BoardState(Deck deck, Dictionary<Destination, Stack<Card>> discards, EnginePlayer you, EnginePlayer them)
        {
            CardsRemaining = deck.Count;

            Discards = new Dictionary<Destination, Card>(discards.Keys.Count);
            
            foreach (var destination in discards.Keys)
            {
                var cards = discards[destination];
                if (cards.Any())
                {
                    Discards.Add(destination, cards.Peek());
                }
            }

            YourExpeditions = you.GetExpeditions();
            TheirExpeditions = them.GetExpeditions();

            YourCards = you.Cards.ToList();
        }
Exemple #3
0
        public GlobalBoardState Init(IPlayer player1, IPlayer player2)
        {
            _player1 = new EnginePlayer(player1);
            _player2 = new EnginePlayer(player2);
            _nextPlayer = _player1;
            _lastTurn = null;
            _deck = new Deck();

            for (var i = 0; i < InitialCards; i++)
            {
                _player1.Cards.Add(_deck.Draw());
                _player2.Cards.Add(_deck.Draw());
            }

            _discards = new Dictionary<Destination, Stack<Card>>();
            var destinations = Enum.GetValues(typeof(Destination)).Cast<Destination>().ToList();

            foreach (var destination in destinations)
            {
                _discards.Add(destination, new Stack<Card>());
            }

            return new GlobalBoardState(_player1, _player2, _deck, _discards);
        }