Dominion.PlayerState.RequestPlayerTrashOtherPlayersRevealedCard C# (CSharp) Method

RequestPlayerTrashOtherPlayersRevealedCard() private method

private RequestPlayerTrashOtherPlayersRevealedCard ( GameState gameState, CardPredicate acceptableCard, PlayerState otherPlayer ) : Dominion.Card
gameState GameState
acceptableCard CardPredicate
otherPlayer PlayerState
return Dominion.Card
        internal Card RequestPlayerTrashOtherPlayersRevealedCard(GameState gameState, CardPredicate acceptableCard,  PlayerState otherPlayer)
        {
            Card cardtoTrash = null;
            if (otherPlayer.cardsBeingRevealed.HasCard(acceptableCard))
            {
                Card cardTypeToTrash = this.actions.GetCardFromOtherPlayersRevealedCardsToTrash(gameState, otherPlayer, acceptableCard);

                cardtoTrash = otherPlayer.cardsBeingRevealed.RemoveCard(cardTypeToTrash);
                if (cardtoTrash == null)
                {
                    throw new Exception("Must choose a revealed card to trash");
                }

                if (!acceptableCard(cardtoTrash))
                {
                    throw new Exception("Card constraint doesnt match.");
                }

                otherPlayer.MoveCardToTrash(cardtoTrash, gameState);
            }

            return cardtoTrash;
        }

Usage Example

Beispiel #1
0
        public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState)
        {
            otherPlayer.RevealCardsFromDeck(2, gameState);

            Card trashedCard = currentPlayer.RequestPlayerTrashOtherPlayersRevealedCard(gameState, card => card.isTreasure, otherPlayer);

            if (trashedCard != null)
            {
                if (currentPlayer.actions.ShouldGainCard(gameState, trashedCard))
                {
                    Card cardToGain = gameState.trash.RemoveCard(trashedCard);
                    currentPlayer.GainCard(gameState, cardToGain, originalLocation:DeckPlacement.Trash, defaultPlacement:DeckPlacement.Discard);
                }
            }

            otherPlayer.MoveRevealedCardsToDiscard(gameState);
        }
All Usage Examples Of Dominion.PlayerState::RequestPlayerTrashOtherPlayersRevealedCard
PlayerState