public static List <Card> VictoryAndTreasures() { return(new List <Card> { Copper.Get(), Silver.Get(), Gold.Get(), Estate.Get(), Duchy.Get(), Province.Get() }); }
private static List <Pile> VictoryAndTreasures(bool two) { return(new List <Pile> { new Pile(Copper.Get(), 60), new Pile(Silver.Get(), 40), new Pile(Gold.Get(), 30), new Pile(Estate.Get(), two ? 8 : 12), new Pile(Duchy.Get(), two ? 8 : 12), new Pile(Province.Get(), two ? 8 : 12) }); }
public override Card SelectCardToGain(KingdomWrapper wrapper, PlayerState ps, Kingdom k, Phase phase) { var provinces = k.GetPile(CardType.Province); if (buyAgenda.Provinces > provinces.Count && wrapper.GetCard(CardType.Province) != null) { return(Province.Get()); } var duchies = k.GetPile(CardType.Duchy); if (buyAgenda.Duchies > provinces.Count && wrapper.GetCard(CardType.Duchy) != null) { return(Duchy.Get()); } var estates = k.GetPile(CardType.Estate); if (buyAgenda.Estates > provinces.Count && wrapper.GetCard(CardType.Estate) != null) { return(Estate.Get()); } for (int i = 0; i < buyAgenda.BuyMenu.Count; i++) { var tuple = buyAgenda.BuyMenu[i]; if (tuple.Number <= 0) { continue; } var card = wrapper.GetCard(tuple.Card); if (card == null) { continue; } tuple.Number--; if (tuple.Number == 0) { buyAgenda.BuyMenu.RemoveAt(i); } else { buyAgenda.BuyMenu[i] = tuple; // this is a value type, i have to return the value back } if (card.IsTreasure) { playerInfo.TreasureTotal += card.Coins; } if (card.Type == CardType.Moneylender) { playerInfo.TreasureTotal -= 1; } else if (card.Type == CardType.Bureaucrat) { playerInfo.TreasureTotal += 2; } else if (card.Type == CardType.Mine) { playerInfo.TreasureTotal += 1; } return(card); } return(null); }
/// <summary> /// Creates a new card based on how many cards have already been made. /// </summary> /// <param name="card"> /// The name of the card to be created. /// </param> /// <returns> /// The new created card. /// </returns> public static Card CreateCard(CardName card) { Contract.Requires(card != CardName.Backside & card != CardName.Empty); Contract.Ensures(Contract.Result<Card>().Name == card); Card c; switch (card) { case CardName.Copper: c = new Copper(); break; case CardName.Silver: c = new Silver(); break; case CardName.Gold: c = new Gold(); break; case CardName.Curse: c = new Curse(); break; case CardName.Estate: c = new Estate(); break; case CardName.Duchy: c = new Duchy(); break; case CardName.Province: c = new Province(); break; case CardName.Gardens: c = new Gardens(); break; case CardName.Cellar: c = new Cellar(); break; case CardName.Chapel: c = new Chapel(); break; case CardName.Chancellor: c = new Chancellor(); break; case CardName.Village: c = new Village(); break; case CardName.Woodcutter: c = new Woodcutter(); break; case CardName.Workshop: c = new Workshop(); break; case CardName.Feast: c = new Feast(); break; case CardName.Moneylender: c = new Moneylender(); break; case CardName.Remodel: c = new Remodel(); break; case CardName.Smithy: c = new Smithy(); break; case CardName.ThroneRoom: c = new ThroneRoom(); break; case CardName.CouncilRoom: c = new CouncilRoom(); break; case CardName.Festival: c = new Festival(); break; case CardName.Laboratory: c = new Laboratory(); break; case CardName.Library: c = new Library(); break; case CardName.Market: c = new Market(); break; case CardName.Mine: c = new Mine(); break; case CardName.Adventurer: c = new Adventurer(); break; case CardName.Bureaucrat: c = new Bureaucrat(); break; case CardName.Militia: c = new Militia(); break; case CardName.Spy: c = new Spy(); break; case CardName.Thief: c = new Thief(); break; case CardName.Witch: c = new Witch(); break; case CardName.Moat: c = new Moat(); break; default: throw new NotImplementedException("Tried to create a card that was not implemented when CardFactory was last updated."); } c.Initialize(card, CardsMade[card]); CardsMade[card] += 1; createdCards.Add(c, true); return c; }