Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
abstract_counter.h
Go to the documentation of this file.
1
6
7#ifndef COUNTER_H
8#define COUNTER_H
9
12
13#include <QColor>
14#include <QGraphicsItem>
15#include <QInputDialog>
16#include <QObject>
17#include <QString>
18#include <qtmetamacros.h>
19
20class PlayerLogic;
21class QAction;
22class QMenu;
23class CounterState;
24class QWidget;
25
26class AbstractCounter : public QObject, public QGraphicsItem, public AbstractPlayerComponent
27{
28 Q_OBJECT
29 Q_INTERFACES(QGraphicsItem)
30
31protected:
33 int id;
34 QString name;
35 int value;
36 QColor color;
37 int radius;
38 bool hovered = false;
40
47 virtual void onValueChanged(int oldValue, int newValue, bool skipDamageAnimation);
48
49 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
50 void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
51 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
52
53private:
54 QAction *aSet = nullptr, *aDec = nullptr, *aInc = nullptr;
55 TearOffMenu *menu = nullptr;
56 bool dialogSemaphore = false;
57 bool deleteAfterDialog = false;
59 bool shortcutActive = false;
60
61private slots:
62 void refreshShortcuts();
63 void incrementCounter();
64 void setCounter();
65
66public:
70 bool useNameForShortcut = false,
71 QGraphicsItem *parent = nullptr);
72 ~AbstractCounter() override;
73
74 void retranslateUi() override;
75 void setShortcutsActive() override;
76 void setShortcutsInactive() override;
77 void delCounter();
78
79 QMenu *getMenu() const
80 {
81 return menu;
82 }
83 int getId() const
84 {
85 return id;
86 }
87 QString getName() const
88 {
89 return name;
90 }
91 QColor getColor() const
92 {
93 return color;
94 }
95 int getRadius() const
96 {
97 return radius;
98 }
99 int getValue() const
100 {
101 return value;
102 }
104 {
105 return shownInCounterArea;
106 }
107};
108
109class AbstractCounterDialog : public QInputDialog
110{
111 Q_OBJECT
112public:
113 AbstractCounterDialog(const QString &name, const QString &value, QWidget *parent = nullptr);
114
115protected:
116 bool eventFilter(QObject *obj, QEvent *event) override;
117 void changeValue(int diff);
118};
119
120#endif
Polymorphic interface for player-bound UI components managed by PlayerMenu.
void changeValue(int diff)
Definition abstract_counter.cpp:234
bool eventFilter(QObject *obj, QEvent *event) override
Definition abstract_counter.cpp:217
AbstractCounterDialog(const QString &name, const QString &value, QWidget *parent=nullptr)
Definition abstract_counter.cpp:208
QAction * aSet
Definition abstract_counter.h:54
void retranslateUi() override
Retranslate all user-visible strings. Called on language change.
Definition abstract_counter.cpp:96
int getValue() const
Definition abstract_counter.h:99
AbstractCounter(CounterState *state, PlayerLogic *player, bool shownInCounterArea, bool useNameForShortcut=false, QGraphicsItem *parent=nullptr)
Definition abstract_counter.cpp:33
int radius
Definition abstract_counter.h:37
bool hovered
Definition abstract_counter.h:38
void refreshShortcuts()
Definition abstract_counter.cpp:135
int value
Definition abstract_counter.h:35
bool getShownInCounterArea() const
Definition abstract_counter.h:103
int id
Definition abstract_counter.h:33
void setShortcutsActive() override
Bind keyboard shortcuts. Called when this player gains focus.
Definition abstract_counter.cpp:103
QColor color
Definition abstract_counter.h:36
QString name
Definition abstract_counter.h:34
int getId() const
Definition abstract_counter.h:83
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition abstract_counter.cpp:142
int getRadius() const
Definition abstract_counter.h:95
QMenu * getMenu() const
Definition abstract_counter.h:79
QAction * aDec
Definition abstract_counter.h:54
bool shownInCounterArea
Definition abstract_counter.h:58
TearOffMenu * menu
Definition abstract_counter.h:55
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
Definition abstract_counter.cpp:167
void incrementCounter()
Definition abstract_counter.cpp:173
virtual void onValueChanged(int oldValue, int newValue, bool skipDamageAnimation)
Hook for subclasses that need per-value-change feedback (e.g. life-total flash).
Definition abstract_counter.cpp:245
PlayerLogic * player
Definition abstract_counter.h:32
QAction * aInc
Definition abstract_counter.h:54
bool useNameForShortcut
Definition abstract_counter.h:39
QColor getColor() const
Definition abstract_counter.h:91
void setShortcutsInactive() override
Unbind keyboard shortcuts. Called when this player loses focus.
Definition abstract_counter.cpp:121
bool shortcutActive
Definition abstract_counter.h:59
void delCounter()
Definition abstract_counter.cpp:87
QString getName() const
Definition abstract_counter.h:87
void setCounter()
Definition abstract_counter.cpp:181
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
Definition abstract_counter.cpp:162
bool dialogSemaphore
Definition abstract_counter.h:56
bool deleteAfterDialog
Definition abstract_counter.h:57
Interface for player-bound UI components that need shortcut and translation lifecycle management.
Definition abstract_player_component.h:18
Definition counter_state.h:12
Definition player_logic.h:56
Definition tearoff_menu.h:15