mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-29 09:22:18 -07:00
92 lines
3.9 KiB
C++
92 lines
3.9 KiB
C++
#include "move_menu.h"
|
|
|
|
#include "../../../client/settings/shortcuts_settings.h"
|
|
#include "../../game/player/player_actions.h"
|
|
#include "../../game/player/player_logic.h"
|
|
#include "../card_menu_action_type.h"
|
|
#include "../player_graphics_item.h"
|
|
|
|
MoveMenu::MoveMenu(PlayerGraphicsItem *player, QWidget *parent) : QMenu(tr("Move to"), parent)
|
|
{
|
|
aMoveToTopLibrary = new QAction(this);
|
|
aMoveToTopLibrary->setData(cmMoveToTopLibrary);
|
|
aMoveToBottomLibrary = new QAction(this);
|
|
aMoveToBottomLibrary->setData(cmMoveToBottomLibrary);
|
|
aMoveToXfromTopOfLibrary = new QAction(this);
|
|
aMoveToTable = new QAction(this);
|
|
aMoveToTable->setData(cmMoveToTable);
|
|
aMoveToGraveyard = new QAction(this);
|
|
aMoveToHand = new QAction(this);
|
|
aMoveToHand->setData(cmMoveToHand);
|
|
aMoveToGraveyard->setData(cmMoveToGraveyard);
|
|
aMoveToExile = new QAction(this);
|
|
aMoveToExile->setData(cmMoveToExile);
|
|
aMoveToCommandZone = new QAction(this);
|
|
aMoveToCommandZone->setData(cmMoveToCommandZone);
|
|
|
|
auto *actions = player->getLogic()->getPlayerActions();
|
|
|
|
auto invoke = [player](CardMenuActionType type) {
|
|
return [type, player]() {
|
|
player->getLogic()->getPlayerActions()->cardMenuAction(player->getGameScene()->selectedCards(), type);
|
|
};
|
|
};
|
|
|
|
connect(aMoveToTopLibrary, &QAction::triggered, actions, invoke(cmMoveToTopLibrary));
|
|
connect(aMoveToBottomLibrary, &QAction::triggered, actions, invoke(cmMoveToBottomLibrary));
|
|
connect(aMoveToXfromTopOfLibrary, &QAction::triggered, actions,
|
|
&PlayerActions::actRequestMoveCardXCardsFromTopDialog);
|
|
connect(aMoveToTable, &QAction::triggered, actions, invoke(cmMoveToTable));
|
|
connect(aMoveToHand, &QAction::triggered, actions, invoke(cmMoveToHand));
|
|
connect(aMoveToGraveyard, &QAction::triggered, actions, invoke(cmMoveToGraveyard));
|
|
connect(aMoveToExile, &QAction::triggered, actions, invoke(cmMoveToExile));
|
|
connect(aMoveToCommandZone, &QAction::triggered, actions, invoke(cmMoveToCommandZone));
|
|
|
|
addAction(aMoveToTopLibrary);
|
|
addAction(aMoveToXfromTopOfLibrary);
|
|
addAction(aMoveToBottomLibrary);
|
|
addSeparator();
|
|
addAction(aMoveToTable);
|
|
addSeparator();
|
|
addAction(aMoveToHand);
|
|
addSeparator();
|
|
addAction(aMoveToGraveyard);
|
|
addSeparator();
|
|
addAction(aMoveToExile);
|
|
addSeparator();
|
|
addAction(aMoveToCommandZone);
|
|
|
|
auto *playerLogic = player->getLogic();
|
|
auto updateCommandZoneVisibility = [this](bool has) { aMoveToCommandZone->setVisible(has); };
|
|
connect(playerLogic, &PlayerLogic::commandZoneSupportChanged, this, updateCommandZoneVisibility);
|
|
updateCommandZoneVisibility(playerLogic->hasServerCommandZone());
|
|
|
|
setShortcutsActive();
|
|
|
|
retranslateUi();
|
|
}
|
|
|
|
void MoveMenu::setShortcutsActive()
|
|
{
|
|
ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts();
|
|
|
|
aMoveToTopLibrary->setShortcuts(shortcuts.getShortcut("Player/aMoveToTopLibrary"));
|
|
aMoveToBottomLibrary->setShortcuts(shortcuts.getShortcut("Player/aMoveToBottomLibrary"));
|
|
aMoveToTable->setShortcuts(shortcuts.getShortcut("Player/aMoveToTable"));
|
|
aMoveToHand->setShortcuts(shortcuts.getShortcut("Player/aMoveToHand"));
|
|
aMoveToGraveyard->setShortcuts(shortcuts.getShortcut("Player/aMoveToGraveyard"));
|
|
aMoveToExile->setShortcuts(shortcuts.getShortcut("Player/aMoveToExile"));
|
|
aMoveToCommandZone->setShortcuts(shortcuts.getShortcut("Player/aMoveToCommandZone"));
|
|
}
|
|
|
|
void MoveMenu::retranslateUi()
|
|
{
|
|
aMoveToTopLibrary->setText(tr("&Top of library in random order"));
|
|
aMoveToXfromTopOfLibrary->setText(tr("X cards from the top of library..."));
|
|
aMoveToBottomLibrary->setText(tr("&Bottom of library in random order"));
|
|
aMoveToTable->setText(tr("T&able"));
|
|
aMoveToHand->setText(tr("&Hand"));
|
|
aMoveToGraveyard->setText(tr("&Graveyard"));
|
|
aMoveToExile->setText(tr("&Exile"));
|
|
aMoveToCommandZone->setText(tr("&Command Zone"));
|
|
}
|