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;
}