public MyPlayerAction(string strategyName, Card withCard, GameStatePredicate withCardPurchaseCondition) : base(strategyName, purchaseOrder: PurchaseOrder(withCard, withCardPurchaseCondition), treasurePlayOrder: DefaultStrategies.DefaultTreasurePlayOrder(), actionOrder: ActionOrder(withCard)) { }
private static CardPickByPriority PurchaseOrder(Card withCard, GameStatePredicate withCardPurchaseCondition) { return new CardPickByPriority( CardAcceptance.For(Cards.Province), CardAcceptance.For(Cards.Rebuild, gameState => CountAllOwned(Cards.Rebuild, gameState) < 2), //In non-mirrors, get a 3rd Rebuild CardAcceptance.For(Cards.Rebuild, gameState => CountAllOwned(Cards.Rebuild, gameState) < 3 && CountOfPile(Cards.Rebuild, gameState) > 7), CardAcceptance.For(Cards.Duchy), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 1), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) == 2 && PlayersPointLead(gameState) > -8), CardAcceptance.For(Cards.Gold), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 2), CardAcceptance.For(Cards.Rebuild, gameState => (CountAllOwned(Cards.Duchy, gameState) > 0 || PlayersPointLead(gameState) > 2) && (CountOfPile(Cards.Rebuild, gameState) > 2 || PlayersPointLead(gameState) > 3 || (CountOfPile(Cards.Rebuild, gameState) == 1 && PlayersPointLead(gameState) > 0))), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Duchy, gameState) >= 4 && CountAllOwned(Cards.Duchy, gameState) == 0 && CountAllOwned(Cards.Estate, gameState) == 0), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Duchy, gameState) == 0 && CountAllOwned(Cards.Duchy, gameState) == 0), new CardAcceptance(withCard, withCardPurchaseCondition), CardAcceptance.For(Cards.Silver)); }
private static CardPickByPriority PurchaseOrder(Card withCard, GameStatePredicate withCardPurchaseCondition) { return(new CardPickByPriority( CardAcceptance.For(Cards.Province), CardAcceptance.For(Cards.Rebuild, gameState => CountAllOwned(Cards.Rebuild, gameState) < 2), //In non-mirrors, get a 3rd Rebuild CardAcceptance.For(Cards.Rebuild, gameState => CountAllOwned(Cards.Rebuild, gameState) < 3 && CountOfPile(Cards.Rebuild, gameState) > 7), CardAcceptance.For(Cards.Duchy), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 1), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) == 2 && PlayersPointLead(gameState) > -8), CardAcceptance.For(Cards.Gold), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 2), CardAcceptance.For(Cards.Rebuild, gameState => (CountAllOwned(Cards.Duchy, gameState) > 0 || PlayersPointLead(gameState) > 2) && (CountOfPile(Cards.Rebuild, gameState) > 2 || PlayersPointLead(gameState) > 3 || (CountOfPile(Cards.Rebuild, gameState) == 1 && PlayersPointLead(gameState) > 0))), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Duchy, gameState) >= 4 && CountAllOwned(Cards.Duchy, gameState) == 0 && CountAllOwned(Cards.Estate, gameState) == 0), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Duchy, gameState) == 0 && CountAllOwned(Cards.Duchy, gameState) == 0), new CardAcceptance(withCard, withCardPurchaseCondition), CardAcceptance.For(Cards.Silver))); }
public CardAcceptance(Card card, GameStatePredicate match) { this.card = card; this.match = match; this.overpayAmount = OverPayZero; }
public CardAcceptance(Card card) { this.card = card; this.match = AlwaysMatch; this.overpayAmount = OverPayZero; }
public MyPlayerAction(int playerNumber, string strategyName, Card withCard, GameStatePredicate withCardPurchaseCondition) : base(strategyName, playerNumber, purchaseOrder: PurchaseOrder(withCard, withCardPurchaseCondition), treasurePlayOrder: Default.DefaultTreasurePlayOrder(), actionOrder: ActionOrder(withCard)) { }
public static CardAcceptance For(Card card, CountSource countSource, Comparison comparison, int threshhold, GameStatePredicate match) { MatchDescription descr = new MatchDescription(card, countSource, comparison, threshhold); return CardAcceptance.For(card, gameState => descr.GameStatePredicate(gameState) && match(gameState)); }
public static CardAcceptance For(Card card, GameStatePredicate match, GameStateIntValue overpayAmount) { return new CardAcceptance(card, match, overpayAmount); }
public static CardAcceptance For(Card card, GameStatePredicate match) { return(new CardAcceptance(card, match)); }
public CardAcceptance(Card card, GameStatePredicate match, GameStateIntValue overpayAmount) { this.card = card; this.match = match; this.overpayAmount = overpayAmount; }
public CardAcceptance(Card card, GameStatePredicate match) { this.card = card; this.match = match; this.overpayAmount = DefaultOverpayAmount; }
public CardAcceptance(Card card) { this.card = card; this.match = DefaultMatch; this.overpayAmount = DefaultOverpayAmount; }
public CardPickForCondition(GameStatePredicate predicate, ICardPicker picker) { this.picker = picker; this.predicate = predicate; }
public static CardAcceptance For(Card card, GameStatePredicate match) { return new CardAcceptance(card, match); }
public static CardAcceptance For(Card card, GameStatePredicate match, GameStateIntValue overpayAmount) { return(new CardAcceptance(card, match, overpayAmount)); }
public static CardAcceptance For(Card card, int threshhold, GameStatePredicate match) { return For(card, CountSource.AllOwned, Comparison.LessThan, threshhold, match); }
public static CardAcceptance For(Card card, int threshhold, GameStatePredicate match) { return(For(card, CountSource.AllOwned, Comparison.LessThan, threshhold, match)); }
public static CardAcceptance For(Card card, CountSource countSource, Comparison comparison, int threshhold, GameStatePredicate match) { MatchDescription descr = new MatchDescription(card, countSource, comparison, threshhold); return(CardAcceptance.For(card, gameState => descr.GameStatePredicate(gameState) && match(gameState))); }