Improve preliminary win check
This commit is contained in:
parent
d68b2ecbcb
commit
5a2e7d5465
|
@ -633,12 +633,13 @@ void GameState::incrementMoveAmt() {
|
|||
|
||||
bool GameState::prelimWinCheck() {
|
||||
// Check if the game is preliminarily won:
|
||||
// This occurs when there are no cards in the draw or throwaway piles,
|
||||
// and all cards in the tableau are revealed. Such games are essentially won,
|
||||
// as the cards only need to be moved to the foundation piles.
|
||||
bool prelimWin = m_drawPile.isEmpty() && m_throwawayPile.isEmpty();
|
||||
// This occurs when all cards in the tableau are revealed.
|
||||
// Games in this state are essentially won, as the cards
|
||||
// only need to be moved to the foundation piles.
|
||||
|
||||
if (prelimWin) {
|
||||
bool prelimWin = true; // Assume a preliminary win unless proven otherwise.
|
||||
|
||||
// Check if all tableau cards are revealed
|
||||
for (const auto& column : std::as_const(m_columns)) {
|
||||
for (const ColumnSlot* card : column) {
|
||||
if (!card->isRevealed()) {
|
||||
|
@ -649,7 +650,6 @@ bool GameState::prelimWinCheck() {
|
|||
if (!prelimWin)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (prelimWin == m_prelimWin)
|
||||
return m_prelimWin;
|
||||
|
|
Loading…
Reference in a new issue