diff options
author | John Fultz <jfultz@wolfram.com> | 2016-07-07 02:43:08 -0500 |
---|---|---|
committer | John Fultz <jfultz@wolfram.com> | 2016-07-07 02:43:08 -0500 |
commit | 471dee2ff71adf97b4dc03eeec414e44fc9e1734 (patch) | |
tree | d06318d310f8e11b7e2b4cd5d65b1e2ced5ea935 /quacker | |
parent | e0412f0249e5357c6ab7f6a10e2af8156725a767 (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.cpp | 13 |
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; |