Dominion.PlayerState.RequestPlayerTrashCardsFromHand C# (CSharp) Method

RequestPlayerTrashCardsFromHand() private method

private RequestPlayerTrashCardsFromHand ( GameState gameState, int cardCount, bool isOptional, bool allOrNone = false ) : CollectionCards
gameState GameState
cardCount int
isOptional bool
allOrNone bool
return CollectionCards
        internal CollectionCards RequestPlayerTrashCardsFromHand(GameState gameState, int cardCount, bool isOptional, bool allOrNone = false)
        {
            var trashedCards = new BagOfCards(gameState.CardGameSubset);
            CardPredicate acceptableCardsToTrash = card => true;
            while (trashedCards.Count < cardCount)
            {
                Card trashedCard = this.RequestPlayerTrashCardFromHandButDontTrash(gameState, acceptableCardsToTrash, isOptional);
                if (trashedCard == null)
                {
                    break;
                }

                if (allOrNone == true)
                    isOptional = false;

                trashedCards.AddCard(trashedCard);
                this.RemoveCardFromHand(trashedCard);
            }

            foreach (var trashedCard in trashedCards)
                this.MoveCardToTrash(trashedCard, gameState);

            return trashedCards;
        }

Usage Example

Example #1
0
        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            PlayerActionChoice actionChoice = currentPlayer.RequestPlayerChooseBetween(
                gameState,
                acceptableChoice => acceptableChoice == PlayerActionChoice.GainCard ||
                                    acceptableChoice == PlayerActionChoice.PlusCoin ||
                                    acceptableChoice == PlayerActionChoice.Trash);

            switch (actionChoice)
            {
                case PlayerActionChoice.GainCard: currentPlayer.GainCardFromSupply(Silver.card, gameState); break;
                case PlayerActionChoice.PlusCoin: currentPlayer.AddCoins(1); break;
                case PlayerActionChoice.Trash: currentPlayer.RequestPlayerTrashCardsFromHand(gameState, 1, false); break;
                default: throw new Exception("Invalid case");
            }
        }
All Usage Examples Of Dominion.PlayerState::RequestPlayerTrashCardsFromHand
PlayerState