Cockatrice 2026-06-01-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 "../player_logic.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);
35
36public slots:
38
39private slots:
40 void refreshShortcuts();
41
42public:
43 explicit PlayerMenu(PlayerLogic *player);
45 void retranslateUi();
46
47 QMenu *updateCardMenu(const CardItem *card);
48
49 [[nodiscard]] QMenu *getPlayerMenu() const
50 {
51 return playerMenu;
52 }
53
54 [[nodiscard]] QMenu *getCountersMenu()
55 {
56 return countersMenu;
57 }
58
59 [[nodiscard]] LibraryMenu *getLibraryMenu() const
60 {
61 return libraryMenu;
62 }
63
64 [[nodiscard]] UtilityMenu *getUtilityMenu() const
65 {
66 return utilityMenu;
67 }
68
69 [[nodiscard]] bool getShortcutsActive() const
70 {
71 return shortcutsActive;
72 }
73
75 void setShortcutsActive();
78
79private:
91
95 QList<AbstractPlayerComponent *> managedComponents;
96 bool shortcutsActive = false;
97
99 template <typename MenuT, typename... Args> MenuT *addManagedMenu(Args &&...args)
100 {
101 auto *menu = new MenuT(std::forward<Args>(args)...);
102 playerMenu->addMenu(menu);
103 managedComponents.append(menu);
104 return menu;
105 }
106
108 template <typename ComponentT, typename... Args> ComponentT *createManagedComponent(Args &&...args)
109 {
110 auto *component = new ComponentT(std::forward<Args>(args)...);
111 managedComponents.append(component);
112 return component;
113 }
114};
115
116#endif // COCKATRICE_PLAYER_MENU_H
Definition card_item.h:28
Definition custom_zone_menu.h:16
Definition grave_menu.h:18
Definition hand_menu.h:20
Definition library_menu.h:20
Definition player_logic.h:65
QMenu * countersMenu
Definition player_menu.h:82
bool shortcutsActive
Definition player_menu.h:96
void retranslateRequested()
TearOffMenu * playerMenu
Definition player_menu.h:81
void cardMenuUpdated(QMenu *cardMenu)
CustomZoneMenu * customZonesMenu
Definition player_menu.h:90
UtilityMenu * utilityMenu
Definition player_menu.h:88
HandMenu * handMenu
Definition player_menu.h:83
ComponentT * createManagedComponent(Args &&...args)
Creates component and registers in managedComponents, but does NOT add it as a submenu.
Definition player_menu.h:108
void refreshShortcuts()
Definition player_menu.cpp:103
void shortcutsDeactivated()
void setMenusForGraphicItems()
Definition player_menu.cpp:56
void retranslateUi()
Retranslate all user-visible strings. Called on language change.
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:99
SideboardMenu * sideboardMenu
Definition player_menu.h:85
QMenu * getCountersMenu()
Definition player_menu.h:54
void shortcutsActivated()
LibraryMenu * getLibraryMenu() const
Definition player_menu.h:59
PlayerLogic * player
Definition player_menu.h:80
LibraryMenu * libraryMenu
Definition player_menu.h:84
void setShortcutsInactive()
Unbind keyboard shortcuts. Called when this player loses focus.
Definition player_menu.cpp:126
void setShortcutsActive()
Bind keyboard shortcuts. Called when this player gains focus.
Definition player_menu.cpp:117
QList< AbstractPlayerComponent * > managedComponents
Drives AbstractPlayerComponent lifecycle delegation. Counters are iterated separately via player->get...
Definition player_menu.h:95
SayMenu * sayMenu
Definition player_menu.h:89
bool getShortcutsActive() const
Definition player_menu.h:69
PlayerMenu(PlayerLogic *player)
Definition player_menu.cpp:13
RfgMenu * rfgMenu
Definition player_menu.h:87
GraveyardMenu * graveMenu
Definition player_menu.h:86
UtilityMenu * getUtilityMenu() const
Definition player_menu.h:64
QMenu * getPlayerMenu() const
Definition player_menu.h:49
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