internal Card RequestPlayerTopDeckCardFromDiscard(GameState gameState, bool isOptional)
{
if (this.Discard.Count == 0)
return null;
Card cardTypeToTopDeck = this.actions.GetCardFromDiscardToTopDeck(gameState, isOptional);
if (cardTypeToTopDeck == null && !isOptional)
{
throw new Exception("Must choose a card to top deck");
}
if (cardTypeToTopDeck == null)
{
return null;
}
Card cardToTopDeck = this.discard.RemoveCard(cardTypeToTopDeck);
if (cardToTopDeck == null)
{
throw new Exception("Selected a card that wasn't in the discard");
}
this.gameLog.PlayerTopDeckedCard(this, cardToTopDeck);
this.deck.AddCardToTop(cardToTopDeck);
return cardToTopDeck;
}