internal void MoveRevealedCardsToDiscard(CardPredicate predicate, GameState gameState) { if (this.cardsBeingRevealed.Any) { while (true) { Card cardFound = this.cardsBeingRevealed.RemoveCard(predicate); if (cardFound == null) { break; } DiscardCard(cardFound, gameState, DeckPlacement.Revealed); } } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { int countTreasureFound = 0; while (countTreasureFound < 2) { Card card = currentPlayer.DrawAndRevealOneCardFromDeck(gameState); if (card == null) { break; } if (card.isTreasure) { countTreasureFound += 1; currentPlayer.MoveRevealedCardToHand(card); } } currentPlayer.MoveRevealedCardsToDiscard(gameState); }