mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-30 02:23:55 -07:00
[Game] Add shortcuts for same size and hand size - 1 mulligans (#6483)
Took 21 minutes Took 3 seconds Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
bcf3939fee
commit
73cc0541f5
5 changed files with 57 additions and 12 deletions
|
|
@ -660,6 +660,12 @@ private:
|
||||||
{"Player/aMulligan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan"),
|
{"Player/aMulligan", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan"),
|
||||||
parseSequenceString("Ctrl+M"),
|
parseSequenceString("Ctrl+M"),
|
||||||
ShortcutGroup::Drawing)},
|
ShortcutGroup::Drawing)},
|
||||||
|
{"Player/aMulliganSame", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan (Same hand size)"),
|
||||||
|
parseSequenceString("Ctrl+Shift+M"),
|
||||||
|
ShortcutGroup::Drawing)},
|
||||||
|
{"Player/aMulliganMinusOne", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Mulligan (Hand size - 1)"),
|
||||||
|
parseSequenceString("Ctrl+Shift+Alt+M"),
|
||||||
|
ShortcutGroup::Drawing)},
|
||||||
{"Player/aDrawCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw a Card"),
|
{"Player/aDrawCard", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Draw a Card"),
|
||||||
parseSequenceString("Ctrl+D"),
|
parseSequenceString("Ctrl+D"),
|
||||||
ShortcutGroup::Drawing)},
|
ShortcutGroup::Drawing)},
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,16 @@ HandMenu::HandMenu(Player *_player, PlayerActions *actions, QWidget *parent) : T
|
||||||
connect(aMulligan, &QAction::triggered, actions, &PlayerActions::actMulligan);
|
connect(aMulligan, &QAction::triggered, actions, &PlayerActions::actMulligan);
|
||||||
addAction(aMulligan);
|
addAction(aMulligan);
|
||||||
|
|
||||||
|
// Mulligan same size
|
||||||
|
aMulliganSame = new QAction(this);
|
||||||
|
connect(aMulliganSame, &QAction::triggered, actions, &PlayerActions::actMulliganSameSize);
|
||||||
|
addAction(aMulliganSame);
|
||||||
|
|
||||||
|
// Mulligan -1
|
||||||
|
aMulliganMinusOne = new QAction(this);
|
||||||
|
connect(aMulliganMinusOne, &QAction::triggered, actions, &PlayerActions::actMulliganMinusOne);
|
||||||
|
addAction(aMulliganMinusOne);
|
||||||
|
|
||||||
addSeparator();
|
addSeparator();
|
||||||
|
|
||||||
mMoveHandMenu = addTearOffMenu(QString());
|
mMoveHandMenu = addTearOffMenu(QString());
|
||||||
|
|
@ -104,7 +114,9 @@ void HandMenu::retranslateUi()
|
||||||
aSortHandByType->setText(tr("Type"));
|
aSortHandByType->setText(tr("Type"));
|
||||||
aSortHandByManaValue->setText(tr("Mana Value"));
|
aSortHandByManaValue->setText(tr("Mana Value"));
|
||||||
|
|
||||||
aMulligan->setText(tr("Take &mulligan"));
|
aMulligan->setText(tr("Take &mulligan (Choose hand size)"));
|
||||||
|
aMulliganSame->setText(tr("Take mulligan (Same hand size)"));
|
||||||
|
aMulliganMinusOne->setText(tr("Take mulligan (Hand size - 1)"));
|
||||||
|
|
||||||
mMoveHandMenu->setTitle(tr("&Move hand to..."));
|
mMoveHandMenu->setTitle(tr("&Move hand to..."));
|
||||||
aMoveHandToTopLibrary->setText(tr("&Top of library"));
|
aMoveHandToTopLibrary->setText(tr("&Top of library"));
|
||||||
|
|
@ -128,6 +140,8 @@ void HandMenu::setShortcutsActive()
|
||||||
aSortHandByType->setShortcuts(shortcuts.getShortcut("Player/aSortHandByType"));
|
aSortHandByType->setShortcuts(shortcuts.getShortcut("Player/aSortHandByType"));
|
||||||
aSortHandByManaValue->setShortcuts(shortcuts.getShortcut("Player/aSortHandByManaValue"));
|
aSortHandByManaValue->setShortcuts(shortcuts.getShortcut("Player/aSortHandByManaValue"));
|
||||||
aMulligan->setShortcuts(shortcuts.getShortcut("Player/aMulligan"));
|
aMulligan->setShortcuts(shortcuts.getShortcut("Player/aMulligan"));
|
||||||
|
aMulliganSame->setShortcuts(shortcuts.getShortcut("Player/aMulliganSame"));
|
||||||
|
aMulliganMinusOne->setShortcuts(shortcuts.getShortcut("Player/aMulliganMinusOne"));
|
||||||
aRevealHandToAll->setShortcuts(shortcuts.getShortcut("Player/aRevealHandToAll"));
|
aRevealHandToAll->setShortcuts(shortcuts.getShortcut("Player/aRevealHandToAll"));
|
||||||
aRevealRandomHandCardToAll->setShortcuts(shortcuts.getShortcut("Player/aRevealRandomHandCardToAll"));
|
aRevealRandomHandCardToAll->setShortcuts(shortcuts.getShortcut("Player/aRevealRandomHandCardToAll"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ private:
|
||||||
|
|
||||||
QAction *aViewHand = nullptr;
|
QAction *aViewHand = nullptr;
|
||||||
QAction *aMulligan = nullptr;
|
QAction *aMulligan = nullptr;
|
||||||
|
QAction *aMulliganSame = nullptr;
|
||||||
|
QAction *aMulliganMinusOne = nullptr;
|
||||||
|
|
||||||
QMenu *mSortHand = nullptr;
|
QMenu *mSortHand = nullptr;
|
||||||
QAction *aSortHandByName = nullptr;
|
QAction *aSortHandByName = nullptr;
|
||||||
|
|
|
||||||
|
|
@ -310,28 +310,48 @@ void PlayerActions::actMulligan()
|
||||||
{
|
{
|
||||||
int startSize = SettingsCache::instance().getStartingHandSize();
|
int startSize = SettingsCache::instance().getStartingHandSize();
|
||||||
int handSize = player->getHandZone()->getCards().size();
|
int handSize = player->getHandZone()->getCards().size();
|
||||||
int deckSize = player->getDeckZone()->getCards().size() + handSize; // hand is shuffled back into the deck
|
int deckSize = player->getDeckZone()->getCards().size() + handSize;
|
||||||
|
|
||||||
bool ok;
|
bool ok;
|
||||||
int number = QInputDialog::getInt(player->getGame()->getTab(), tr("Draw hand"),
|
int number = QInputDialog::getInt(player->getGame()->getTab(), tr("Draw hand"),
|
||||||
tr("Number of cards: (max. %1)").arg(deckSize) + '\n' +
|
tr("Number of cards: (max. %1)").arg(deckSize) + '\n' +
|
||||||
tr("0 and lower are in comparison to current hand size"),
|
tr("0 and lower are in comparison to current hand size"),
|
||||||
startSize, -handSize, deckSize, 1, &ok);
|
startSize, -handSize, deckSize, 1, &ok);
|
||||||
|
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Command_Mulligan cmd;
|
|
||||||
if (number < 1) {
|
if (number < 1) {
|
||||||
if (handSize == 0) {
|
number = handSize + number;
|
||||||
return;
|
|
||||||
}
|
|
||||||
cmd.set_number(handSize + number);
|
|
||||||
} else {
|
|
||||||
cmd.set_number(number);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doMulligan(number);
|
||||||
|
SettingsCache::instance().setStartingHandSize(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerActions::actMulliganSameSize()
|
||||||
|
{
|
||||||
|
int handSize = player->getHandZone()->getCards().size();
|
||||||
|
doMulligan(handSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerActions::actMulliganMinusOne()
|
||||||
|
{
|
||||||
|
int handSize = player->getHandZone()->getCards().size();
|
||||||
|
int targetSize = qMax(1, handSize - 1);
|
||||||
|
doMulligan(targetSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerActions::doMulligan(int number)
|
||||||
|
{
|
||||||
|
if (number < 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Command_Mulligan cmd;
|
||||||
|
cmd.set_number(number);
|
||||||
sendGameCommand(cmd);
|
sendGameCommand(cmd);
|
||||||
if (startSize != number) {
|
|
||||||
SettingsCache::instance().setStartingHandSize(number);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerActions::actDrawCards()
|
void PlayerActions::actDrawCards()
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,9 @@ public slots:
|
||||||
void actDrawCards();
|
void actDrawCards();
|
||||||
void actUndoDraw();
|
void actUndoDraw();
|
||||||
void actMulligan();
|
void actMulligan();
|
||||||
|
void actMulliganSameSize();
|
||||||
|
void actMulliganMinusOne();
|
||||||
|
void doMulligan(int number);
|
||||||
|
|
||||||
void actPlay();
|
void actPlay();
|
||||||
void actPlayFacedown();
|
void actPlayFacedown();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue