Dominion.PlayerState.RequestPlayerChooseCardToRemoveFromHandForPlay C# (CSharp) Method

RequestPlayerChooseCardToRemoveFromHandForPlay() private method

private RequestPlayerChooseCardToRemoveFromHandForPlay ( GameState gameState, CardPredicate acceptableCard, bool isTreasure, bool isAction, bool isOptional ) : Dominion.Card
gameState GameState
acceptableCard CardPredicate
isTreasure bool
isAction bool
isOptional bool
return Dominion.Card
        internal Card RequestPlayerChooseCardToRemoveFromHandForPlay(GameState gameState, CardPredicate acceptableCard, bool isTreasure, bool isAction, bool isOptional)
        {
            if (!(isTreasure ^ isAction))
                throw new System.InvalidOperationException("Must be action or treasure");

            if (!this.hand.HasCard(acceptableCard))
            {
                return null;
            }

            Card cardTypeToPlay = isTreasure ?
                this.actions.GetTreasureFromHandToPlay(gameState, acceptableCard, isOptional) :
                this.actions.GetCardFromHandToPlay(gameState, acceptableCard, isOptional);

            if (cardTypeToPlay == null)
            {
                if (!isOptional)
                {
                    throw new Exception("Must choose an action to play");
                }
                return null;
            }

            Card currentCard = this.RemoveCardFromHand(cardTypeToPlay);
            if (currentCard == null)
            {
                throw new Exception("Player tried to remove a card that wasn't available in hand");
            }

            return currentCard;
        }

Usage Example

Ejemplo n.º 1
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     // TODO  Make sure throne room, Kings Court and procession stay in play when they play a duration card.
     // throw new NotImplementedException
     Card cardToPlay = currentPlayer.RequestPlayerChooseCardToRemoveFromHandForPlay(gameState, Delegates.IsActionCardPredicate, isTreasure: false, isAction: true, isOptional: false);
     if (cardToPlay != null)
     {
         currentPlayer.DoPlayAction(cardToPlay, gameState, countTimes: 2);
     }
 }
All Usage Examples Of Dominion.PlayerState::RequestPlayerChooseCardToRemoveFromHandForPlay
PlayerState