internal void RequestPlayerInspectTopOfDeckForDiscard(PlayerState decidingPlayer, GameState gameState, bool shouldReveal = true)
{
Card movedCard = shouldReveal ? this.DrawAndRevealOneCardFromDeck(gameState) : this.DrawAndLookAtOneCardFromDeck(gameState);
if (movedCard == null)
return;
gameState.gameLog.PushScope();
if (decidingPlayer.actions.ShouldPlayerDiscardCardFromDeck(gameState, this, movedCard))
{
if (shouldReveal)
{
this.MoveRevealedCardToDiscard(movedCard, gameState);
}
else
{
this.MoveLookedAtCardsToDiscard(gameState);
}
}
else
{
if (shouldReveal)
{
this.MoveRevealedCardToTopOfDeck();
}
else
{
this.MoveLookedAtCardToTopOfDeck();
}
}
gameState.gameLog.PopScope();
}