Dominion.PlayerState.RequestPlayerMoveRevealedCardToHand C# (CSharp) Method

RequestPlayerMoveRevealedCardToHand() private method

private RequestPlayerMoveRevealedCardToHand ( GameState gameState, CardPredicate acceptableCard ) : Dominion.Card
gameState GameState
acceptableCard CardPredicate
return Dominion.Card
        internal Card RequestPlayerMoveRevealedCardToHand(GameState gameState, CardPredicate acceptableCard)
        {
            if (!this.cardsBeingRevealed.AnyWhere(acceptableCard))
            {
                return null;
            }

            Card cardToPutInHand = this.actions.GetCardFromRevealedCardsToPutInHand(gameState, acceptableCard);
            if (cardToPutInHand == null)
            {
                throw new Exception("Player must choose a card to put in hand");
            }

            if (!acceptableCard(cardToPutInHand))
            {
                throw new Exception("Card did not meet constraint");
            }

            this.MoveRevealedCardToHand(cardToPutInHand);

            return cardToPutInHand;
        }

Usage Example

        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            Card trashedCard = null;
            if (currentPlayer.actions.ShouldTrashCard(gameState, Cards.Raze))
            {
                if (currentPlayer.MoveCardFromPlayToTrash(gameState))
                    trashedCard = Cards.Raze;
            }
            else
            {
                trashedCard = currentPlayer.RequestPlayerTrashCardFromHand(gameState, c => true, isOptional: false);
            }

            if (trashedCard == null)
                return;

            int cardsToLookAt = trashedCard.CurrentCoinCost(currentPlayer);
            if (cardsToLookAt == 0)
                return;

            currentPlayer.LookAtCardsFromDeck(cardsToLookAt, gameState);
            currentPlayer.RequestPlayerMoveRevealedCardToHand(gameState, c => true);
            currentPlayer.MoveLookedAtCardsToDiscard(gameState);
        }
PlayerState