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 }
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(); }
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); }