protected void AddProsperityCards(CardBank bank) { bank.AddCardPile(new UnlimitedSupplyCardPile(() => new Platinum())); var colonyPile = new LimitedSupplyCardPile(); colonyPile.WithNewCards<Colony>(_numberOfPlayers <= 2 ? 8 : 12); bank.AddCardPileWhichEndsTheGameWhenEmpty(colonyPile); }
protected void AddProsperityCards(CardBank bank) { bank.AddCardPile(new UnlimitedSupplyCardPile(() => new Platinum())); var colonyPile = new LimitedSupplyCardPile(); colonyPile.WithNewCards <Colony>(_numberOfPlayers <= 2 ? 8 : 12); bank.AddCardPileWhichEndsTheGameWhenEmpty(colonyPile); }
public override void InitializeBank(CardBank bank) { foreach (string card in _chosenCards) bank.AddCardPile(new LimitedSupplyCardPile().WithNewCards(card, GetStartingCount(card))); if (_useProsperity) AddProsperityCards(bank); base.InitializeBank(bank); }
public override void InitializeBank(CardBank bank) { foreach (var card in mChosenCards) bank.AddCardPile(new LimitedSupplyCardPile().WithNewCards(card, 10)); if (_useProsperity) AddProsperityCards(bank); base.InitializeBank(bank); }
public Game CreateGame(IEnumerable<string> playerNames) { if(playerNames.Count() != _numberOfPlayers) throw new ArgumentException(string.Format("Expected {0} player names.", playerNames)); var bank = new CardBank(); InitializeBank(bank); var players = playerNames.Select(name => new Player(name, CreateStartingDeck())); return new Game(players, bank, new TextGameLog()); }
public virtual void InitializeBank(CardBank bank) { bank.AddCardPile(Gold); bank.AddCardPile(Silver); bank.AddCardPileWhichEndsTheGameWhenEmpty(Provinces); bank.AddCardPile(Duchies); bank.AddCardPile(Potions); bank.AddCardPile(Copper); bank.AddCardPile(Estates); bank.AddCardPile(Curses); }
public virtual void InitializeBank(CardBank bank) { bank.AddCardPile(Gold); bank.AddCardPile(Silver); bank.AddCardPileWhichEndsTheGameWhenEmpty(Provinces); bank.AddCardPile(Duchies); bank.AddCardPile(Copper); bank.AddCardPile(Estates); bank.AddCardPile(Curses); if(bank.Piles.Any(p => p.TopCard.Cost.Potions > 0)) bank.AddCardPile(Potions); }
public override void InitializeBank(CardBank bank) { foreach (string card in _chosenCards) { bank.AddCardPile(new LimitedSupplyCardPile().WithNewCards(card, GetStartingCount(card))); } if (_useProsperity) { AddProsperityCards(bank); } base.InitializeBank(bank); }
public Game CreateGame(IEnumerable <string> playerNames) { if (playerNames.Count() != _numberOfPlayers) { throw new ArgumentException(string.Format("Expected {0} player names.", playerNames)); } var bank = new CardBank(); InitializeBank(bank); var players = playerNames.Select(name => new Player(name, CreateStartingDeck())); return(new Game(players, bank, new TextGameLog())); }
public virtual void InitializeBank(CardBank bank) { bank.AddCardPile(Gold); bank.AddCardPile(Silver); bank.AddCardPileWhichEndsTheGameWhenEmpty(Provinces); bank.AddCardPile(Duchies); bank.AddCardPile(Copper); bank.AddCardPile(Estates); bank.AddCardPile(Curses); if (bank.Piles.Any(p => p.TopCard.Cost.Potions > 0)) { bank.AddCardPile(Potions); } }
public Game(IEnumerable<Player> players, CardBank bank, IGameLog log) { if(!players.Any()) throw new ArgumentException("There must be at least one player"); _players = new List<Player>(players); Bank = bank; Log = log; Trash = new TrashPile(); _gameTurns = GameTurns().GetEnumerator(); _gameTurns.MoveNext(); }
private void UpdateBank(CardBank bank) { var container = flowLayoutPanel1; container.Controls.Clear(); foreach (var pile in bank.Piles) { var button = new Button(); button.Width = 200; button.Enabled = _turnEnumerator.Current.InBuyStep && _turnEnumerator.Current.Buys > 0 && _turnEnumerator.Current.MoneyToSpend >= pile.TopCard.Cost && !pile.IsEmpty; var currentPile = pile; if (pile is UnlimitedSupplyCardPile) { button.Text = string.Format("Buy {0} for {1} ", pile.TopCard, pile.TopCard.Cost); button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); }; } else if (pile.IsEmpty) { button.Text = string.Format("Sold out"); button.Enabled = false; } else { button.Text = string.Format("Buy {0} for {1} ({2} remaining)", pile.TopCard, pile.TopCard.Cost, pile.CardCount); button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); }; } container.Controls.Add(button); } }
private void UpdateBank(CardBank bank) { var container = flowLayoutPanel1; container.Controls.Clear(); foreach(var pile in bank.Piles) { var button = new Button(); button.Width = 200; button.Enabled = _turnEnumerator.Current.InBuyStep && _turnEnumerator.Current.Buys > 0 && _turnEnumerator.Current.MoneyToSpend >= pile.TopCard.Cost && !pile.IsEmpty; var currentPile = pile; if(pile is UnlimitedSupplyCardPile) { button.Text = string.Format("Buy {0} for {1} ", pile.TopCard, pile.TopCard.Cost); button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); }; } else if(pile.IsEmpty) { button.Text = string.Format("Sold out"); button.Enabled = false; } else { button.Text = string.Format("Buy {0} for {1} ({2} remaining)", pile.TopCard, pile.TopCard.Cost, pile.CardCount); button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); }; } container.Controls.Add(button); } }
public GainUtility(IGameLog log, CardBank bank, Player player) { _log = log; _player = player; _bank = bank; }