Cockatrice 2026-04-21-Development-2.11.0-beta.61
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 "../player.h"
12#include "custom_zone_menu.h"
13#include "grave_menu.h"
14#include "hand_menu.h"
15#include "library_menu.h"
16#include "rfg_menu.h"
17#include "say_menu.h"
18#include "sideboard_menu.h"
19#include "utility_menu.h"
20
21#include <QList>
22#include <QMenu>
23#include <QObject>
24
25class CardItem;
26class PlayerMenu : public QObject
27{
28 Q_OBJECT
29
30signals:
31 void cardMenuUpdated(QMenu *cardMenu);
32
33public slots:
35
36private slots:
37 void refreshShortcuts();
38
39public:
40 explicit PlayerMenu(Player *player);
42 void retranslateUi();
43
44 QMenu *updateCardMenu(const CardItem *card);
45
46 [[nodiscard]] QMenu *getPlayerMenu() const
47 {
48 return playerMenu;
49 }
50
51 [[nodiscard]] QMenu *getCountersMenu()
52 {
53 return countersMenu;
54 }
55
56 [[nodiscard]] LibraryMenu *getLibraryMenu() const
57 {
58 return libraryMenu;
59 }
60
61 [[nodiscard]] UtilityMenu *getUtilityMenu() const
62 {
63 return utilityMenu;
64 }
65
66 [[nodiscard]] bool getShortcutsActive() const
67 {
68 return shortcutsActive;
69 }
70
72 void setShortcutsActive();
75
76private:
88
90 QList<AbstractPlayerComponent *> managedComponents;
91 bool shortcutsActive = false;
92
94 template <typename MenuT, typename... Args> MenuT *addManagedMenu(Args &&...args)
95 {
96 auto *menu = new MenuT(std::forward<Args>(args)...);
97 playerMenu->addMenu(menu);
98 managedComponents.append(menu);
99 return menu;
100 }
101
103 template <typename ComponentT, typename... Args> ComponentT *createManagedComponent(Args &&...args)
104 {
105 auto *component = new ComponentT(std::forward<Args>(args)...);
106 managedComponents.append(component);
107 return component;
108 }
109};
110
111#endif // COCKATRICE_PLAYER_MENU_H
Definition card_item.h:27
Definition custom_zone_menu.h:16
Definition grave_menu.h:18
Definition hand_menu.h:20
Definition library_menu.h:20
PlayerMenu(Player *player)
Definition player_menu.cpp:13
QMenu * countersMenu
Definition player_menu.h:79
bool shortcutsActive
Definition player_menu.h:91
TearOffMenu * playerMenu
Definition player_menu.h:78
void cardMenuUpdated(QMenu *cardMenu)
CustomZoneMenu * customZonesMenu
Definition player_menu.h:87
UtilityMenu * utilityMenu
Definition player_menu.h:85
HandMenu * handMenu
Definition player_menu.h:80
ComponentT * createManagedComponent(Args &&...args)
Creates component and registers in managedComponents, but does NOT add it as a submenu.
Definition player_menu.h:103
void refreshShortcuts()
Definition player_menu.cpp:106
void setMenusForGraphicItems()
Definition player_menu.cpp:56
void retranslateUi()
Lifecycle methods: delegate to all managedComponents, plus counters separately via player->getCounter...
Definition player_menu.cpp:88
QMenu * updateCardMenu(const CardItem *card)
Definition player_menu.cpp:68
MenuT * addManagedMenu(Args &&...args)
Creates component, adds it as a submenu of playerMenu, and registers in managedComponents.
Definition player_menu.h:94
SideboardMenu * sideboardMenu
Definition player_menu.h:82
QMenu * getCountersMenu()
Definition player_menu.h:51
LibraryMenu * getLibraryMenu() const
Definition player_menu.h:56
LibraryMenu * libraryMenu
Definition player_menu.h:81
void setShortcutsInactive()
Delegates to all managedComponents, plus counters separately.
Definition player_menu.cpp:137
void setShortcutsActive()
Delegates to all managedComponents, plus counters separately.
Definition player_menu.cpp:120
QList< AbstractPlayerComponent * > managedComponents
Drives AbstractPlayerComponent lifecycle delegation. Counters are iterated separately via player->get...
Definition player_menu.h:90
SayMenu * sayMenu
Definition player_menu.h:86
bool getShortcutsActive() const
Definition player_menu.h:66
Player * player
Definition player_menu.h:77
RfgMenu * rfgMenu
Definition player_menu.h:84
GraveyardMenu * graveMenu
Definition player_menu.h:83
UtilityMenu * getUtilityMenu() const
Definition player_menu.h:61
QMenu * getPlayerMenu() const
Definition player_menu.h:46
Definition player.h:66
Definition rfg_menu.h:18
Definition say_menu.h:16
Definition sideboard_menu.h:16
Definition tearoff_menu.h:14
Definition utility_menu.h:16
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.