summaryrefslogtreecommitdiff
path: root/quacker
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2016-07-07 02:43:08 -0500
committerJohn Fultz <jfultz@wolfram.com>2016-07-07 02:43:08 -0500
commit471dee2ff71adf97b4dc03eeec414e44fc9e1734 (patch)
treed06318d310f8e11b7e2b4cd5d65b1e2ced5ea935 /quacker
parente0412f0249e5357c6ab7f6a10e2af8156725a767 (diff)
Allow games loaded from gcg to switch to unknown racks.
When the message box that says you made a play which uses tiles not on your rack comes up, it now has a third option...switch to player with unknown tiles. So, you'll get this message box at most once per player if you choose that option.
Diffstat (limited to 'quacker')
-rw-r--r--quacker/quacker.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/quacker/quacker.cpp b/quacker/quacker.cpp
index 01e778a..7baeb9e 100644
--- a/quacker/quacker.cpp
+++ b/quacker/quacker.cpp
@@ -297,7 +297,6 @@ void TopLevel::setCandidateMove(const Quackle::Move &move)
if (!m_game->hasPositions() || (move.action == Quackle::Move::Place && move.tiles().empty()))
return;
- bool playHasIllegalWords = false;
Quackle::Move prettiedMove(move);
m_game->currentPosition().ensureMoveTilesDoNotIncludePlayThru(prettiedMove);
m_game->currentPosition().ensureMovePrettiness(prettiedMove);
@@ -309,6 +308,7 @@ void TopLevel::setCandidateMove(const Quackle::Move &move)
}
else
{
+ bool playHasIllegalWords = false;
int validityFlags = m_game->currentPosition().validateMove(prettiedMove);
bool carryOn = true;
@@ -337,7 +337,16 @@ void TopLevel::setCandidateMove(const Quackle::Move &move)
}
else
{
- carryOn = askToCarryOn(tr("%1's rack does not include all tiles in %2; make play anyway?").arg(QuackleIO::Util::uvStringToQString(m_game->currentPosition().currentPlayer().name())).arg(QuackleIO::Util::moveToDetailedString(prettiedMove)));
+ QMessageBox mb(QMessageBox::Question, tr("Verify Play"),
+ tr("%1's rack does not include all tiles in %2; make play anyway?").arg(QuackleIO::Util::uvStringToQString(m_game->currentPosition().currentPlayer().name())).arg(QuackleIO::Util::moveToDetailedString(prettiedMove)));
+ QPushButton* mb_yes = mb.addButton(QMessageBox::Yes);
+ mb.addButton(QMessageBox::No);
+ QPushButton* mb_unknownRacks = mb.addButton(tr("Assume unknown racks for this game"), QMessageBox::ApplyRole);
+ mb.exec();
+ if (mb.clickedButton() == mb_yes || mb.clickedButton() == mb_unknownRacks)
+ carryOn = true;
+ if (mb.clickedButton() == mb_unknownRacks)
+ m_game->currentPosition().currentPlayer().setRacksAreKnown(false);
}
validityFlags ^= Quackle::GamePosition::InvalidTiles;