Dominion.PlayerState.RequestPlayerTrashCardFromHandAndGainCard C# (CSharp) Method

RequestPlayerTrashCardFromHandAndGainCard() private method

private RequestPlayerTrashCardFromHandAndGainCard ( GameState gameState, CardPredicate acceptableCardsToTrash, CostConstraint costConstraint, int cost, CardRelativeCost cardRelativeCost, bool isOptionalToTrash = false, bool isOptionalToGain = false, DeckPlacement defaultLocation = DeckPlacement.Discard ) : Dominion.Card
gameState GameState
acceptableCardsToTrash CardPredicate
costConstraint CostConstraint
cost int
cardRelativeCost CardRelativeCost
isOptionalToTrash bool
isOptionalToGain bool
defaultLocation DeckPlacement
return Dominion.Card
        internal Card RequestPlayerTrashCardFromHandAndGainCard(
            GameState gameState,
            CardPredicate acceptableCardsToTrash,
            CostConstraint costConstraint,
            int cost,
            CardRelativeCost cardRelativeCost,
            bool isOptionalToTrash = false,
            bool isOptionalToGain = false,
            DeckPlacement defaultLocation = DeckPlacement.Discard)
        {
            Card trashedCard = this.RequestPlayerTrashCardFromHand(gameState, acceptableCardsToTrash, isOptionalToTrash);
            if (trashedCard != null)
            {
                int cardCost = cardRelativeCost == CardRelativeCost.RelativeCost ? trashedCard.CurrentCoinCost(this) + cost :
                                   cardRelativeCost == CardRelativeCost.AbsoluteCost ? cost : 0;

                CardPredicate cardPredicate;
                if (costConstraint == CostConstraint.Exactly)
                {
                    cardPredicate = acceptableCard => acceptableCard.CurrentCoinCost(this) == cardCost;
                }
                else if (costConstraint == CostConstraint.UpTo)
                {
                    cardPredicate = acceptableCard => acceptableCard.CurrentCoinCost(this) <= cardCost;
                }
                else
                {
                    throw new Exception("Invalid operation");
                }

                return this.RequestPlayerGainCardFromSupply(
                    gameState,
                    cardPredicate,
                    "",
                    isOptionalToGain,
                    defaultLocation);
            }

            return null;
        }

Usage Example

Ejemplo n.º 1
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RequestPlayerTrashCardFromHandAndGainCard(
         gameState,
         acceptableCard => true,
         CostConstraint.UpTo,
         5,
         CardRelativeCost.AbsoluteCost);
 }
All Usage Examples Of Dominion.PlayerState::RequestPlayerTrashCardFromHandAndGainCard
PlayerState