change number dialog defaults (#4318)

This commit is contained in:
ebbit1q 2021-04-18 20:50:24 +02:00 committed by GitHub
parent 5969656429
commit 1062894397
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 31 deletions

View file

@ -104,9 +104,8 @@ void PlayerArea::setPlayerZoneId(int _playerZoneId)
} }
Player::Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, TabGame *_parent) Player::Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, TabGame *_parent)
: QObject(_parent), game(_parent), shortcutsActive(false), defaultNumberTopCards(1), : QObject(_parent), game(_parent), shortcutsActive(false), lastTokenDestroy(true), lastTokenTableRow(0), id(_id),
defaultNumberTopCardsToPlaceBelow(1), lastTokenDestroy(true), lastTokenTableRow(0), id(_id), active(false), active(false), local(_local), judge(_judge), mirrored(false), handVisible(false), conceded(false), zoneId(0),
local(_local), judge(_judge), mirrored(false), handVisible(false), conceded(false), zoneId(0),
dialogSemaphore(false), deck(nullptr) dialogSemaphore(false), deck(nullptr)
{ {
userInfo = new ServerInfo_User; userInfo = new ServerInfo_User;
@ -604,11 +603,11 @@ void Player::playerListActionTriggered()
if (menu == mRevealLibrary) { if (menu == mRevealLibrary) {
cmd.set_zone_name("deck"); cmd.set_zone_name("deck");
} else if (menu == mRevealTopCard) { } else if (menu == mRevealTopCard) {
int decksize = zones.value("deck")->getCards().size(); int deckSize = zones.value("deck")->getCards().size();
bool ok; bool ok;
int number = QInputDialog::getInt(game, tr("Reveal top cards of library"), int number = QInputDialog::getInt(game, tr("Reveal top cards of library"),
tr("Number of cards: (max. %1)").arg(decksize), defaultNumberTopCards, 1, tr("Number of cards: (max. %1)").arg(deckSize), defaultNumberTopCards, 1,
decksize, 1, &ok); deckSize, 1, &ok);
if (ok) { if (ok) {
cmd.set_zone_name("deck"); cmd.set_zone_name("deck");
cmd.set_top_cards(number); cmd.set_top_cards(number);
@ -1037,9 +1036,11 @@ void Player::actViewHand()
void Player::actViewTopCards() void Player::actViewTopCards()
{ {
int deckSize = zones.value("deck")->getCards().size();
bool ok; bool ok;
int number = QInputDialog::getInt(game, tr("View top cards of library"), tr("Number of cards:"), int number =
defaultNumberTopCards, 1, 2000000000, 1, &ok); QInputDialog::getInt(game, tr("View top cards of library"), tr("Number of cards: (max. %1)").arg(deckSize),
defaultNumberTopCards, 1, deckSize, 1, &ok);
if (ok) { if (ok) {
defaultNumberTopCards = number; defaultNumberTopCards = number;
static_cast<GameScene *>(scene())->toggleZoneView(this, "deck", number); static_cast<GameScene *>(scene())->toggleZoneView(this, "deck", number);
@ -1113,11 +1114,12 @@ void Player::actMulligan()
{ {
int startSize = SettingsCache::instance().getStartingHandSize(); int startSize = SettingsCache::instance().getStartingHandSize();
int handSize = zones.value("hand")->getCards().size(); int handSize = zones.value("hand")->getCards().size();
int deckSize = zones.value("deck")->getCards().size() + handSize; int deckSize = zones.value("deck")->getCards().size() + handSize; // hand is shuffled back into the deck
bool ok; bool ok;
int number = QInputDialog::getInt( int number = QInputDialog::getInt(game, tr("Draw hand"),
game, tr("Draw hand"), tr("Number of cards:") + '\n' + tr("0 and lower are in comparison to current hand size"), tr("Number of cards: (max. %1)").arg(deckSize) + '\n' +
startSize, -handSize, deckSize, 1, &ok); tr("0 and lower are in comparison to current hand size"),
startSize, -handSize, deckSize, 1, &ok);
if (!ok) { if (!ok) {
return; return;
} }
@ -1138,8 +1140,12 @@ void Player::actMulligan()
void Player::actDrawCards() void Player::actDrawCards()
{ {
int number = QInputDialog::getInt(game, tr("Draw cards"), tr("Number:")); int deckSize = zones.value("deck")->getCards().size();
if (number) { bool ok;
int number = QInputDialog::getInt(game, tr("Draw cards"), tr("Number of cards: (max. %1)").arg(deckSize),
defaultNumberTopCards, 1, deckSize, 1, &ok);
if (ok) {
defaultNumberTopCards = number;
Command_DrawCards cmd; Command_DrawCards cmd;
cmd.set_number(static_cast<google::protobuf::uint32>(number)); cmd.set_number(static_cast<google::protobuf::uint32>(number));
sendGameCommand(cmd); sendGameCommand(cmd);
@ -1206,12 +1212,16 @@ void Player::actMoveTopCardsToGrave()
return; return;
} }
int number = QInputDialog::getInt(game, tr("Move top cards to grave"), tr("Number:")); bool ok;
if (number == 0) { int number =
QInputDialog::getInt(game, tr("Move top cards to grave"), tr("Number of cards: (max. %1)").arg(maxCards),
defaultNumberTopCards, 1, maxCards, 1, &ok);
if (!ok) {
return; return;
} else if (number > maxCards) { } else if (number > maxCards) {
number = maxCards; number = maxCards;
} }
defaultNumberTopCards = number;
Command_MoveCard cmd; Command_MoveCard cmd;
cmd.set_start_zone("deck"); cmd.set_start_zone("deck");
@ -1234,12 +1244,16 @@ void Player::actMoveTopCardsToExile()
return; return;
} }
int number = QInputDialog::getInt(game, tr("Move top cards to exile"), tr("Number:")); bool ok;
if (number == 0) { int number =
QInputDialog::getInt(game, tr("Move top cards to exile"), tr("Number of cards: (max. %1)").arg(maxCards),
defaultNumberTopCards, 1, maxCards, 1, &ok);
if (!ok) {
return; return;
} else if (number > maxCards) { } else if (number > maxCards) {
number = maxCards; number = maxCards;
} }
defaultNumberTopCards = number;
Command_MoveCard cmd; Command_MoveCard cmd;
cmd.set_start_zone("deck"); cmd.set_start_zone("deck");
@ -1341,12 +1355,16 @@ void Player::actMoveBottomCardsToGrave()
return; return;
} }
int number = QInputDialog::getInt(game, tr("Move bottom cards to grave"), tr("Number:")); bool ok;
if (number == 0) { int number =
QInputDialog::getInt(game, tr("Move bottom cards to grave"), tr("Number of cards: (max. %1)").arg(maxCards),
defaultNumberBottomCards, 1, maxCards, 1, &ok);
if (!ok) {
return; return;
} else if (number > maxCards) { } else if (number > maxCards) {
number = maxCards; number = maxCards;
} }
defaultNumberBottomCards = number;
Command_MoveCard cmd; Command_MoveCard cmd;
cmd.set_start_zone("deck"); cmd.set_start_zone("deck");
@ -1369,12 +1387,16 @@ void Player::actMoveBottomCardsToExile()
return; return;
} }
int number = QInputDialog::getInt(game, tr("Move bottom cards to exile"), tr("Number:")); bool ok;
if (number == 0) { int number =
QInputDialog::getInt(game, tr("Move bottom cards to exile"), tr("Number of cards: (max. %1)").arg(maxCards),
defaultNumberBottomCards, 1, maxCards, 1, &ok);
if (!ok) {
return; return;
} else if (number > maxCards) { } else if (number > maxCards) {
number = maxCards; number = maxCards;
} }
defaultNumberBottomCards = number;
Command_MoveCard cmd; Command_MoveCard cmd;
cmd.set_start_zone("deck"); cmd.set_start_zone("deck");
@ -1427,12 +1449,15 @@ void Player::actDrawBottomCards()
return; return;
} }
int number = QInputDialog::getInt(game, tr("Draw bottom cards"), tr("Number:")); bool ok;
if (number == 0) { int number = QInputDialog::getInt(game, tr("Draw bottom cards"), tr("Number of cards: (max. %1)").arg(maxCards),
defaultNumberBottomCards, 1, maxCards, 1, &ok);
if (!ok) {
return; return;
} else if (number > maxCards) { } else if (number > maxCards) {
number = maxCards; number = maxCards;
} }
defaultNumberBottomCards = number;
Command_MoveCard cmd; Command_MoveCard cmd;
cmd.set_start_zone("deck"); cmd.set_start_zone("deck");
@ -1499,8 +1524,10 @@ void Player::actUntapAll()
void Player::actRollDie() void Player::actRollDie()
{ {
bool ok; bool ok;
int sides = QInputDialog::getInt(game, tr("Roll die"), tr("Number of sides:"), 20, 2, 1000, 1, &ok); int sides = QInputDialog::getInt(game, tr("Roll die"), tr("Number of sides:"), defaultNumberDieRoll, minDieRoll,
maxDieRoll, 1, &ok);
if (ok) { if (ok) {
defaultNumberDieRoll = sides;
Command_RollDie cmd; Command_RollDie cmd;
cmd.set_sides(static_cast<google::protobuf::uint32>(sides)); cmd.set_sides(static_cast<google::protobuf::uint32>(sides));
sendGameCommand(cmd); sendGameCommand(cmd);
@ -2695,11 +2722,13 @@ bool Player::clearCardsToDelete()
void Player::actMoveCardXCardsFromTop() void Player::actMoveCardXCardsFromTop()
{ {
int deckSize = zones.value("deck")->getCards().size() + 1; // add the card to move to the deck
bool ok; bool ok;
int number = QInputDialog::getInt(game, tr("Place card X cards from top of library"), int number =
tr("How many cards from the top of the deck should this card be placed:"), QInputDialog::getInt(game, tr("Place card X cards from top of library"),
defaultNumberTopCardsToPlaceBelow, 1, 2000000000, 1, &ok); tr("Which position should this card be placed:") + "\n" + tr("(max. %1)").arg(deckSize),
number--; defaultNumberTopCardsToPlaceBelow, 1, deckSize, 1, &ok);
number -= 1; // indexes start at 0
if (!ok) { if (!ok) {
return; return;

View file

@ -247,8 +247,12 @@ private:
*aMoveToXfromTopOfLibrary; *aMoveToXfromTopOfLibrary;
bool shortcutsActive; bool shortcutsActive;
int defaultNumberTopCards; int defaultNumberTopCards = 1;
int defaultNumberTopCardsToPlaceBelow; int defaultNumberTopCardsToPlaceBelow = 1;
int defaultNumberBottomCards = 1;
int defaultNumberDieRoll = 20;
static constexpr int minDieRoll = 2;
static constexpr int maxDieRoll = 1000000;
QString lastTokenName, lastTokenColor, lastTokenPT, lastTokenAnnotation; QString lastTokenName, lastTokenColor, lastTokenPT, lastTokenAnnotation;
bool lastTokenDestroy; bool lastTokenDestroy;
int lastTokenTableRow; int lastTokenTableRow;