Cockatrice 2026-06-27-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
player_menu.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_PLAYER_MENU_H
8#define COCKATRICE_PLAYER_MENU_H
9
11#include "custom_zone_menu.h"
12#include "grave_menu.h"
13#include "hand_menu.h"
14#include "library_menu.h"
15#include "rfg_menu.h"
16#include "say_menu.h"
17#include "sideboard_menu.h"
18#include "utility_menu.h"
19
20#include <QList>
21#include <QMenu>
22#include <QObject>
23
24class CardItem;
25class CardMenu;
27class PlayerMenu : public QObject
28{
29 Q_OBJECT
30
31signals:
32 void cardMenuUpdated(CardMenu *cardMenu);
33 void cardInfoRequested(const CardRef &cardRef);
37
38public slots:
40 QMenu *updateCardMenu(const CardItem *card);
41
42private slots:
43 void refreshShortcuts();
44
45public:
48 void retranslateUi();
49
50 [[nodiscard]] QMenu *getPlayerMenu() const
51 {
52 return playerMenu;
53 }
54
55 [[nodiscard]] QMenu *getCountersMenu()
56 {
57 return countersMenu;
58 }
59
60 [[nodiscard]] LibraryMenu *getLibraryMenu() const
61 {
62 return libraryMenu;
63 }
64
65 [[nodiscard]] UtilityMenu *getUtilityMenu() const
66 {
67 return utilityMenu;
68 }
69
70 [[nodiscard]] bool getShortcutsActive() const
71 {
72 return shortcutsActive;
73 }
74
76 void setShortcutsActive();
79
80private:
92
96 QList<AbstractPlayerComponent *> managedComponents;
97 bool shortcutsActive = false;
98
100 template <typename MenuT, typename... Args> MenuT *addManagedMenu(Args &&...args)
101 {
102 auto *menu = new MenuT(std::forward<Args>(args)...);
103 playerMenu->addMenu(menu);
104 managedComponents.append(menu);
105 return menu;
106 }
107
109 template <typename ComponentT, typename... Args> ComponentT *createManagedComponent(Args &&...args)
110 {
111 auto *component = new ComponentT(std::forward<Args>(args)...);
112 managedComponents.append(component);
113 return component;
114 }
115};
116
117#endif // COCKATRICE_PLAYER_MENU_H
Definition card_item.h:28
Definition card_menu.h:17
Definition custom_zone_menu.h:16
Definition grave_menu.h:18
Definition hand_menu.h:20
Definition library_menu.h:21
Definition player_graphics_item.h:25
QMenu * countersMenu
Definition player_menu.h:83
bool shortcutsActive
Definition player_menu.h:97
void retranslateRequested()
void cardMenuUpdated(CardMenu *cardMenu)
TearOffMenu * playerMenu
Definition player_menu.h:82
CustomZoneMenu * customZonesMenu
Definition player_menu.h:91
UtilityMenu * utilityMenu
Definition player_menu.h:89
HandMenu * handMenu
Definition player_menu.h:84
ComponentT * createManagedComponent(Args &&...args)
Creates component and registers in managedComponents, but does NOT add it as a submenu.
Definition player_menu.h:109
void refreshShortcuts()
Definition player_menu.cpp:109
void shortcutsDeactivated()
void setMenusForGraphicItems()
Definition player_menu.cpp:60
PlayerGraphicsItem * player
Definition player_menu.h:81
void retranslateUi()
Retranslate all user-visible strings. Called on language change.
Definition player_menu.cpp:94
QMenu * updateCardMenu(const CardItem *card)
Definition player_menu.cpp:72
MenuT * addManagedMenu(Args &&...args)
Creates component, adds it as a submenu of playerMenu, and registers in managedComponents.
Definition player_menu.h:100
SideboardMenu * sideboardMenu
Definition player_menu.h:86
QMenu * getCountersMenu()
Definition player_menu.h:55
void shortcutsActivated()
LibraryMenu * getLibraryMenu() const
Definition player_menu.h:60
LibraryMenu * libraryMenu
Definition player_menu.h:85
void setShortcutsInactive()
Unbind keyboard shortcuts. Called when this player loses focus.
Definition player_menu.cpp:133
void setShortcutsActive()
Bind keyboard shortcuts. Called when this player gains focus.
Definition player_menu.cpp:124
PlayerMenu(PlayerGraphicsItem *player)
Definition player_menu.cpp:14
QList< AbstractPlayerComponent * > managedComponents
Drives AbstractPlayerComponent lifecycle delegation. Counters are iterated separately via player->get...
Definition player_menu.h:96
SayMenu * sayMenu
Definition player_menu.h:90
bool getShortcutsActive() const
Definition player_menu.h:70
void cardInfoRequested(const CardRef &cardRef)
RfgMenu * rfgMenu
Definition player_menu.h:88
GraveyardMenu * graveMenu
Definition player_menu.h:87
UtilityMenu * getUtilityMenu() const
Definition player_menu.h:65
QMenu * getPlayerMenu() const
Definition player_menu.h:50
Definition rfg_menu.h:18
Definition say_menu.h:16
Definition sideboard_menu.h:16
Definition tearoff_menu.h:14
Definition utility_menu.h:17
Definition card_ref.h:14