From 8bc2127b4d38f224643668d504adc9f42d2371cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Fri, 12 Sep 2025 02:20:31 +0200 Subject: [PATCH] Set active shortcuts, move player info stuff to card menu. Took 25 minutes Took 18 seconds --- .../src/game/player/player_menu/card_menu.cpp | 31 +++++- .../src/game/player/player_menu/card_menu.h | 2 +- .../src/game/player/player_menu/move_menu.cpp | 2 + .../game/player/player_menu/player_menu.cpp | 94 ++++++++----------- .../src/game/player/player_menu/player_menu.h | 3 - .../src/game/player/player_menu/pt_menu.cpp | 2 + 6 files changed, 69 insertions(+), 65 deletions(-) diff --git a/cockatrice/src/game/player/player_menu/card_menu.cpp b/cockatrice/src/game/player/player_menu/card_menu.cpp index 4bf6b92aa..4b45fce7d 100644 --- a/cockatrice/src/game/player/player_menu/card_menu.cpp +++ b/cockatrice/src/game/player/player_menu/card_menu.cpp @@ -11,14 +11,22 @@ #include "move_menu.h" #include "pt_menu.h" -CardMenu::CardMenu(Player *_player, - const CardItem *_card, - QList> _playersInfo, - bool _shortcutsActive) - : player(_player), card(_card), playersInfo(_playersInfo), shortcutsActive(_shortcutsActive) +CardMenu::CardMenu(Player *_player, const CardItem *_card, bool _shortcutsActive) + : player(_player), card(_card), shortcutsActive(_shortcutsActive) { auto playerActions = player->getPlayerActions(); + const QList &players = player->getGame()->getPlayerManager()->getPlayers().values(); + + for (auto playerToAdd : players) { + if (playerToAdd == player) { + continue; + } + playersInfo.append(qMakePair(playerToAdd->getPlayerInfo()->getName(), playerToAdd->getPlayerInfo()->getId())); + } + + connect(player->getGame()->getPlayerManager(), &PlayerManager::playerRemoved, this, &CardMenu::removePlayer); + aTap = new QAction(this); aTap->setData(cmTap); connect(aTap, &QAction::triggered, playerActions, &PlayerActions::cardMenuAction); @@ -73,6 +81,8 @@ CardMenu::CardMenu(Player *_player, connect(tempSetCounter, &QAction::triggered, playerActions, &PlayerActions::actCardCounterTrigger); } + setShortcutsActive(); + retranslateUi(); if (card == nullptr) { @@ -127,6 +137,17 @@ CardMenu::CardMenu(Player *_player, } } +void CardMenu::removePlayer(Player *playerToRemove) +{ + for (auto it = playersInfo.begin(); it != playersInfo.end();) { + if (it->second == playerToRemove->getPlayerInfo()->getId()) { + it = playersInfo.erase(it); + } else { + ++it; + } + } +} + void CardMenu::createTableMenu() { // Card is on the battlefield diff --git a/cockatrice/src/game/player/player_menu/card_menu.h b/cockatrice/src/game/player/player_menu/card_menu.h index 7cfa2b4c3..43218cbec 100644 --- a/cockatrice/src/game/player/player_menu/card_menu.h +++ b/cockatrice/src/game/player/player_menu/card_menu.h @@ -12,8 +12,8 @@ class CardMenu : public QMenu public: explicit CardMenu(Player *player, const CardItem *card, - QList> playersInfo, bool shortcutsActive); + void removePlayer(Player *playerToRemove); void createTableMenu(); void createStackMenu(); void createGraveyardOrExileMenu(); diff --git a/cockatrice/src/game/player/player_menu/move_menu.cpp b/cockatrice/src/game/player/player_menu/move_menu.cpp index 263deb737..d27e16009 100644 --- a/cockatrice/src/game/player/player_menu/move_menu.cpp +++ b/cockatrice/src/game/player/player_menu/move_menu.cpp @@ -36,6 +36,8 @@ MoveMenu::MoveMenu(Player *player) : QMenu(tr("Move to")) addSeparator(); addAction(aMoveToExile); + setShortcutsActive(); + retranslateUi(); } diff --git a/cockatrice/src/game/player/player_menu/player_menu.cpp b/cockatrice/src/game/player/player_menu/player_menu.cpp index 72176156b..aa2951992 100644 --- a/cockatrice/src/game/player/player_menu/player_menu.cpp +++ b/cockatrice/src/game/player/player_menu/player_menu.cpp @@ -25,11 +25,9 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) PlayerActions *playerActions = player->getPlayerActions(); - createViewActions(); - playerMenu = new TearOffMenu(); - if (player->getPlayerInfo()->local || player->getPlayerInfo()->judge) { + if (player->getPlayerInfo()->getLocalOrJudge()) { handMenu = new HandMenu(player, player->getPlayerActions(), playerMenu); playerMenu->addMenu(handMenu); /*playerLists.append(mRevealHand = handMenu->addMenu(QString())); @@ -37,6 +35,9 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) libraryMenu = new LibraryMenu(player, playerMenu); playerMenu->addMenu(libraryMenu); + } else { + handMenu = nullptr; + libraryMenu = nullptr; } graveMenu = new GraveyardMenu(player, playerMenu); @@ -45,8 +46,12 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) rfgMenu = new RfgMenu(player, playerMenu); playerMenu->addMenu(rfgMenu); - if (player->getPlayerInfo()->local || player->getPlayerInfo()->judge) { + if (player->getPlayerInfo()->getLocalOrJudge()) { sbMenu = playerMenu->addMenu(QString()); + + aViewSideboard = new QAction(this); + connect(aViewSideboard, &QAction::triggered, playerActions, &PlayerActions::actViewSideboard); + sbMenu->addAction(aViewSideboard); mCustomZones = playerMenu->addMenu(QString()); @@ -83,16 +88,30 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) playerMenu->addAction(aCreateAnotherToken); playerMenu->addMenu(createPredefinedTokenMenu); playerMenu->addSeparator(); + } else { + countersMenu = nullptr; + sbMenu = nullptr; + mCustomZones = nullptr; + aCreateToken = nullptr; + aCreateAnotherToken = nullptr; + createPredefinedTokenMenu = nullptr; + aIncrementAllCardCounters = nullptr; + + aViewSideboard = nullptr; + sbMenu = nullptr; + + aUntapAll = nullptr; + aRollDie = nullptr; } - if (player->getPlayerInfo()->local) { + if (player->getPlayerInfo()->getLocal()) { sayMenu = playerMenu->addMenu(QString()); connect(&SettingsCache::instance().messages(), &MessageSettings::messageMacrosChanged, this, &PlayerMenu::initSayMenu); initSayMenu(); } - if (player->getPlayerInfo()->local || player->getPlayerInfo()->judge) { + if (player->getPlayerInfo()->getLocalOrJudge()) { for (auto &playerList : playerLists) { QAction *newAction = playerList->addAction(QString()); @@ -103,25 +122,6 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) } } - // We have to explicitly not-instantiate a bunch of things if we are not local or a judge or else we have to - // consider it everywhere instead of just null-checking - if (!player->getPlayerInfo()->local && !player->getPlayerInfo()->judge) { - countersMenu = nullptr; - sbMenu = nullptr; - mCustomZones = nullptr; - aCreateAnotherToken = nullptr; - createPredefinedTokenMenu = nullptr; - aIncrementAllCardCounters = nullptr; - - aViewSideboard = nullptr; - handMenu = nullptr; - sbMenu = nullptr; - libraryMenu = nullptr; - - aUntapAll = nullptr; - aRollDie = nullptr; - } - connect(&SettingsCache::instance().shortcuts(), &ShortcutsSettings::shortCutChanged, this, &PlayerMenu::refreshShortcuts); refreshShortcuts(); @@ -136,25 +136,15 @@ PlayerMenu::PlayerMenu(Player *_player) : player(_player) void PlayerMenu::setMenusForGraphicItems() { player->getGraphicsItem()->getTableZoneGraphicsItem()->setMenu(playerMenu); - // player->getGraphicsItem()->getGraveyardZoneGraphicsItem()->setMenu(graveMenu, aViewGraveyard); - // player->getGraphicsItem()->getRfgZoneGraphicsItem()->setMenu(rfgMenu, aViewRfg); - if (player->getPlayerInfo()->local || player->getPlayerInfo()->judge) { + player->getGraphicsItem()->getGraveyardZoneGraphicsItem()->setMenu(graveMenu, graveMenu->aViewGraveyard); + player->getGraphicsItem()->getRfgZoneGraphicsItem()->setMenu(rfgMenu, rfgMenu->aViewRfg); + if (player->getPlayerInfo()->getLocalOrJudge()) { player->getGraphicsItem()->getHandZoneGraphicsItem()->setMenu(handMenu); - // player->getGraphicsItem()->getDeckZoneGraphicsItem()->setMenu(libraryMenu, aDrawCard); + player->getGraphicsItem()->getDeckZoneGraphicsItem()->setMenu(libraryMenu, libraryMenu->aDrawCard); player->getGraphicsItem()->getSideboardZoneGraphicsItem()->setMenu(sbMenu); } } -void PlayerMenu::createViewActions() -{ - PlayerActions *playerActions = player->getPlayerActions(); - - if (player->getPlayerInfo()->local || player->getPlayerInfo()->judge) { - aViewSideboard = new QAction(this); - connect(aViewSideboard, &QAction::triggered, playerActions, &PlayerActions::actViewSideboard); - } -} - void PlayerMenu::refreshShortcuts() { if (shortcutsActive) { @@ -171,11 +161,6 @@ void PlayerMenu::addPlayer(Player *playerToAdd) for (auto &playerList : playerLists) { addPlayerToList(playerList, playerToAdd); } - for (auto &playerList : singlePlayerLists) { - addPlayerToList(playerList, playerToAdd); - } - - playersInfo.append(qMakePair(playerToAdd->getPlayerInfo()->getName(), playerToAdd->getPlayerInfo()->getId())); } void PlayerMenu::addPlayerToList(QMenu *playerList, Player *playerToAdd) @@ -194,17 +179,6 @@ void PlayerMenu::removePlayer(Player *playerToRemove) for (auto &playerList : playerLists) { removePlayerFromList(playerList, playerToRemove); } - for (auto &playerList : singlePlayerLists) { - removePlayerFromList(playerList, playerToRemove); - } - - for (auto it = playersInfo.begin(); it != playersInfo.end();) { - if (it->second == playerToRemove->getPlayerInfo()->getId()) { - it = playersInfo.erase(it); - } else { - ++it; - } - } } void PlayerMenu::removePlayerFromList(QMenu *playerList, Player *player) @@ -270,7 +244,7 @@ QMenu *PlayerMenu::updateCardMenu(const CardItem *card) return nullptr; } - QMenu *menu = new CardMenu(player, card, playersInfo, shortcutsActive); + QMenu *menu = new CardMenu(player, card, shortcutsActive); emit cardMenuUpdated(menu); return menu; @@ -375,6 +349,14 @@ void PlayerMenu::setShortcutsActive() shortcutsActive = true; ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts(); + if (handMenu) { + handMenu->setShortcutsActive(); + } + if (libraryMenu) { + libraryMenu->setShortcutsActive(); + } + graveMenu->setShortcutsActive(); + QMapIterator counterIterator(player->getCounters()); while (counterIterator.hasNext()) { counterIterator.next().value()->setShortcutsActive(); diff --git a/cockatrice/src/game/player/player_menu/player_menu.h b/cockatrice/src/game/player/player_menu/player_menu.h index a604e67ad..fcd3e6cf8 100644 --- a/cockatrice/src/game/player/player_menu/player_menu.h +++ b/cockatrice/src/game/player/player_menu/player_menu.h @@ -32,7 +32,6 @@ private slots: public: PlayerMenu(Player *player); - void createViewActions(); void retranslateUi(); void addPlayerToList(QMenu *playerList, Player *playerToAdd); @@ -90,9 +89,7 @@ private: RfgMenu *rfgMenu; TearOffMenu *playerMenu; QList playerLists; - QList singlePlayerLists; QList allPlayersActions; - QList> playersInfo; QAction *aViewSideboard, *aUntapAll, *aRollDie, *aCreateToken, *aCreateAnotherToken; QAction *aIncrementAllCardCounters; diff --git a/cockatrice/src/game/player/player_menu/pt_menu.cpp b/cockatrice/src/game/player/player_menu/pt_menu.cpp index d7f244b19..dae03e07f 100644 --- a/cockatrice/src/game/player/player_menu/pt_menu.cpp +++ b/cockatrice/src/game/player/player_menu/pt_menu.cpp @@ -42,6 +42,8 @@ PtMenu::PtMenu(Player *player) : QMenu(tr("Power / toughness")) addAction(aSetPT); addAction(aResetPT); + setShortcutsActive(); + retranslateUi(); }