Dominion.PlayerState.RequestPlayerRevealCardFromHand C# (CSharp) Method

RequestPlayerRevealCardFromHand() private method

private RequestPlayerRevealCardFromHand ( CardPredicate acceptableCard, GameState gameState ) : Dominion.Card
acceptableCard CardPredicate
gameState GameState
return Dominion.Card
        internal Card RequestPlayerRevealCardFromHand(CardPredicate acceptableCard, GameState gameState)
        {
            if (!this.hand.HasCard(acceptableCard))
            {
                return null;
            }

            Card cardToReveal = this.actions.GetCardFromHandToReveal(gameState,
                card => acceptableCard(card) && this.hand.HasCard(card));

            if (cardToReveal != null)
            {
                Card revealedCard = RevealCardFromHand(cardToReveal, gameState);
                this.MoveAllRevealedCardsToHand();
                return revealedCard;
            }

            return null;
        }

Usage Example

Ejemplo n.º 1
0
        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            Card revealedCard = currentPlayer.RequestPlayerRevealCardFromHand(acceptableCard => true, gameState);
            if (revealedCard == null)
            {
                return;
            }

            currentPlayer.MoveRevealedCardToHand(revealedCard);

            int maxReturnCount = 1;
            if (currentPlayer.Hand.CountWhere(card => card.Equals(revealedCard)) > 1)
            {
                maxReturnCount++;
            }

            int returnCount = currentPlayer.actions.GetCountToReturnToSupply(revealedCard, gameState);
            returnCount = Math.Min(returnCount, maxReturnCount);
            returnCount = Math.Max(returnCount, 0);

            for (int i = 0; i < returnCount; ++i)
            {
                currentPlayer.ReturnCardFromHandToSupply(revealedCard, gameState);
            }

            foreach (PlayerState otherPlayer in gameState.players.OtherPlayers)
            {
                if (!otherPlayer.IsAffectedByAttacks(gameState))
                {
                    otherPlayer.GainCardFromSupply(gameState, revealedCard);
                }
            }
        }
All Usage Examples Of Dominion.PlayerState::RequestPlayerRevealCardFromHand
PlayerState