private static bool ShouldGainCopper(GameState gameState, ICardPicker gainOrder) { PlayerState self = gameState.Self; int minValue = self.ExpectedCoinValueAtEndOfTurn; int maxValue = minValue + Strategy.CountInHand(Dominion.Cards.IllGottenGains, gameState); if (maxValue == minValue) { return(false); } CardPredicate shouldGainCard = delegate(Card card) { int currentCardCost = card.CurrentCoinCost(self); return(currentCardCost >= minValue && currentCardCost <= maxValue); }; Card cardType = gainOrder.GetPreferredCard(gameState, shouldGainCard); if (cardType == null) { return(false); } int coppersToGain = PlayerAction.CostOfCard(cardType, gameState) - minValue; return(coppersToGain > 0); }
// TODO: implement a better default choice of which Ruins to player. private static int CompareRuins(Card first, Card second, GameState gameState, ICardPicker purchaseOrder) { PlayerState self = gameState.Self; int coinsToSpend = self.ExpectedCoinValueAtEndOfTurn; if (first == Cards.AbandonedMine || second == Cards.AbandonedMine) { CardPredicate shouldGainCard = delegate(Card card) { int currentCardCost = card.CurrentCoinCost(self); return(currentCardCost == coinsToSpend + 1); }; Card cardType = purchaseOrder.GetPreferredCard(gameState, shouldGainCard); if (cardType != null) { return(first == Cards.AbandonedMine ? 0 : 1); } //Card Card1 = purchaseOrder.GetPreferredCard( // gameState, // card => coinsToSpend >= card.CurrentCoinCost(currentPlayer) && // gameState.GetPile(card).Any()); //Card Card2 = purchaseOrder.GetPreferredCard( // gameState, // card => coinsToSpend + 1 >= card.CurrentCoinCost(currentPlayer) && // gameState.GetPile(card).Any()); //if (Card1 != Card2) // return first.name == "Abandoned Mine" ? 0 : 1; } return(0); }
private static bool ShouldGainCopper(GameState gameState, ICardPicker gainOrder) { PlayerState self = gameState.Self; int minValue = self.ExpectedCoinValueAtEndOfTurn; int maxValue = minValue + Strategy.CountInHand(Dominion.Cards.IllGottenGains, gameState); if (maxValue == minValue) return false; CardPredicate shouldGainCard = delegate(Card card) { int currentCardCost = card.CurrentCoinCost(self); return currentCardCost >= minValue && currentCardCost <= maxValue; }; Card cardType = gainOrder.GetPreferredCard(gameState, shouldGainCard); if (cardType == null) return false; int coppersToGain = DefaultPlayerAction.CostOfCard(cardType, gameState) - minValue; return (coppersToGain > 0); }
private static bool CanTrashForGold(GameState gameState, ICardPicker trashOrder) { PlayerState self = gameState.Self; return trashOrder.GetPreferredCard(gameState, c => (self.Hand.HasCard(c) || self.Discard.HasCard(c)) && CardTypes.Hermit.CanTrashCard(c)) != null && self.Hand.HasCard(Cards.Hermit) && self.Hand.HasCard(Cards.MarketSquare); }
private static bool CanTrashForGold(GameState gameState, ICardPicker trashOrder) { PlayerState self = gameState.Self; return(trashOrder.GetPreferredCard(gameState, c => (self.Hand.HasCard(c) || self.Discard.HasCard(c)) && CardTypes.Hermit.CanTrashCard(c)) != null && self.Hand.HasCard(Cards.Hermit) && self.Hand.HasCard(Cards.MarketSquare)); }
public Card GetPreferredCardReverse(GameState gameState, CardPredicate cardPredicate) { for (int i = this.matchers.Length - 1; i > 0; --i) { ICardPicker matcher = this.matchers[i]; Card result = matcher.GetPreferredCard(gameState, cardPredicate); if (result != null) { return(result); } } return(null); }
public static int CountAllOwned(ICardPicker matchingCards, GameState gameState) { return(gameState.Self.AllOwnedCards.CountWhere( card => matchingCards.GetPreferredCard(gameState, testCard => testCard == card) != null)); }
public static bool HasCardIn(Card card, ICardPicker matchingCards, GameState gameState) { return(matchingCards.GetPreferredCard(gameState, c => c == card) != null); }
public static int CountInHandFrom(ICardPicker matchingCards, GameState gameState) { return(gameState.Self.Hand.CountWhere(card => matchingCards.GetPreferredCard(gameState, current => current == card) != null)); }
public static Card WhichCardFromInHand(ICardPicker matchingCards, GameState gameState) { return(matchingCards.GetPreferredCard(gameState, card => gameState.Self.Hand.HasCard(card))); }
public static bool DoesCardPickerMatch(this ICardPicker pickOrder, GameState gameState, Card card) { return(pickOrder.GetPreferredCard(gameState, c => c == card) != null); }
public static int CountInHandFrom(ICardPicker matchingCards, GameState gameState) { return gameState.Self.Hand.CountWhere(card => matchingCards.GetPreferredCard(gameState, current => current == card) != null); }
public static int CountAllOwned(ICardPicker matchingCards, GameState gameState) { return gameState.Self.AllOwnedCards.CountWhere( card => matchingCards.GetPreferredCard(gameState, testCard => testCard == card) != null); }
public static Card WhichCardFromInHand(ICardPicker matchingCards, GameState gameState) { return matchingCards.GetPreferredCard(gameState, card => gameState.Self.Hand.HasCard(card)); }
public static bool HasCardIn(Card card, ICardPicker matchingCards, GameState gameState) { return matchingCards.GetPreferredCard(gameState, c => c == card) != null; }