Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
player.h
Go to the documentation of this file.
1
6
7#ifndef PLAYER_H
8#define PLAYER_H
9
16#include "menu/player_menu.h"
17#include "player_area.h"
20#include "player_info.h"
21
22#include <QInputDialog>
23#include <QLoggingCategory>
24#include <QMap>
25#include <QTimer>
27#include <libcockatrice/protocol/pb/card_attributes.pb.h>
28#include <libcockatrice/protocol/pb/game_event.pb.h>
29
30inline Q_LOGGING_CATEGORY(PlayerLog, "player");
31
32namespace google
33{
34namespace protobuf
35{
36class Message;
37}
38} // namespace google
40class AbstractCounter;
41class AbstractGame;
42class ArrowItem;
43class ArrowTarget;
44class CardDatabase;
45class CardZone;
46class CommandContainer;
47class DeckLoader;
48class GameCommand;
49class GameEvent;
50class PlayerInfo;
52class PlayerActions;
53class PlayerMenu;
54class QAction;
55class QMenu;
56class ServerInfo_Arrow;
57class ServerInfo_Counter;
58class ServerInfo_Player;
59class ServerInfo_User;
60class TabGame;
61
62const int MAX_TOKENS_PER_DIALOG = 99;
63
64class Player : public QObject
65{
66 Q_OBJECT
67
68signals:
69 void openDeckEditor(DeckLoader *deck);
74 void concededChanged(int playerId, bool conceded);
78
79public slots:
80 void setActive(bool _active);
81
82public:
83 Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, AbstractGame *_parent);
85 ~Player() override;
86
87 void initializeZones();
88 void updateZones();
89 void clear();
90
91 void processPlayerInfo(const ServerInfo_Player &info);
92 void processCardAttachment(const ServerInfo_Player &info);
93
94 void addCard(CardItem *c);
95 void deleteCard(CardItem *c);
96
97 bool clearCardsToDelete();
98
99 bool getActive() const
100 {
101 return active;
102 }
103
105 {
106 return game;
107 }
108
110
111 [[nodiscard]] PlayerGraphicsItem *getGraphicsItem();
112
113 [[nodiscard]] PlayerActions *getPlayerActions() const
114 {
115 return playerActions;
116 }
117
119 {
120 return playerEventHandler;
121 }
122
123 [[nodiscard]] PlayerInfo *getPlayerInfo() const
124 {
125 return playerInfo;
126 }
127
128 [[nodiscard]] PlayerMenu *getPlayerMenu() const
129 {
130 return playerMenu;
131 }
132
133 void setDeck(DeckLoader &_deck);
134
135 [[nodiscard]] DeckLoader *getDeck() const
136 {
137 return deck;
138 }
139
140 template <typename T> T *addZone(T *zone)
141 {
142 zones.insert(zone->getName(), zone);
143 return zone;
144 }
145
146 CardZoneLogic *getZone(const QString zoneName)
147 {
148 return zones.value(zoneName);
149 }
150
151 const QMap<QString, CardZoneLogic *> &getZones() const
152 {
153 return zones;
154 }
155
157 {
158 return qobject_cast<PileZoneLogic *>(zones.value("deck"));
159 }
160
162 {
163 return qobject_cast<PileZoneLogic *>(zones.value("grave"));
164 }
165
167 {
168 return qobject_cast<PileZoneLogic *>(zones.value("rfg"));
169 }
170
172 {
173 return qobject_cast<PileZoneLogic *>(zones.value("sb"));
174 }
175
177 {
178 return qobject_cast<TableZoneLogic *>(zones.value("table"));
179 }
180
182 {
183 return qobject_cast<StackZoneLogic *>(zones.value("stack"));
184 }
185
187 {
188 return qobject_cast<HandZoneLogic *>(zones.value("hand"));
189 }
190
191 AbstractCounter *addCounter(const ServerInfo_Counter &counter);
192 AbstractCounter *addCounter(int counterId, const QString &name, QColor color, int radius, int value);
193 void delCounter(int counterId);
194 void clearCounters();
196
197 QMap<int, AbstractCounter *> getCounters()
198 {
199 return counters;
200 }
201
202 ArrowItem *addArrow(const ServerInfo_Arrow &arrow);
203 ArrowItem *addArrow(int arrowId, CardItem *startCard, ArrowTarget *targetItem, const QColor &color);
204 void delArrow(int arrowId);
205 void removeArrow(ArrowItem *arrow);
206 void clearArrows();
207
208 const QMap<int, ArrowItem *> &getArrows() const
209 {
210 return arrows;
211 }
212
213 void setConceded(bool _conceded);
214 bool getConceded() const
215 {
216 return conceded;
217 }
218
219 void setGameStarted();
220
221 void setDialogSemaphore(const bool _active)
222 {
223 dialogSemaphore = _active;
224 }
225
226 int getZoneId() const
227 {
228 return zoneId;
229 }
230
231 void setZoneId(int _zoneId);
232
233private:
240
241 bool active;
243
244 DeckLoader *deck;
245
247 QMap<QString, CardZoneLogic *> zones;
248 QMap<int, AbstractCounter *> counters;
249 QMap<int, ArrowItem *> arrows;
250
252 QList<CardItem *> cardsToDelete;
253
254 // void eventConnectionStateChanged(const Event_ConnectionStateChanged &event);
255};
256
257class AnnotationDialog : public QInputDialog
258{
259 Q_OBJECT
260 void keyPressEvent(QKeyEvent *e) override;
261
262public:
263 explicit AnnotationDialog(QWidget *parent = nullptr) : QInputDialog(parent)
264 {
265 }
266};
267
268#endif
TODO: Document this.
Definition abstract_card_item.h:22
Definition abstract_counter.h:22
Definition abstract_game.h:21
AnnotationDialog(QWidget *parent=nullptr)
Definition player.h:263
void keyPressEvent(QKeyEvent *e) override
Definition player_actions.cpp:1466
Definition arrow_item.h:19
Definition arrow_target.h:18
Core in-memory container for card and set data.
Definition card_database.h:29
Definition card_item.h:29
Definition card_zone_logic.h:26
Definition card_zone.h:26
Manages the game board display including players, zones, cards, and animations.
Definition game_scene.h:38
Definition hand_zone_logic.h:12
Definition pile_zone_logic.h:12
Definition player_actions.h:34
Definition player_event_handler.h:38
Definition player_graphics_item.h:22
Definition player_info.h:16
Definition player_menu.h:26
void addCard(CardItem *c)
Definition player.cpp:250
void setConceded(bool _conceded)
Definition player.cpp:100
void setGameStarted()
Definition player.cpp:476
DeckLoader * getDeck() const
Definition player.h:135
CardZoneLogic * getZone(const QString zoneName)
Definition player.h:146
bool dialogSemaphore
Definition player.h:251
AbstractCounter * addCounter(const ServerInfo_Counter &counter)
Definition player.cpp:274
void incrementAllCardCounters()
Definition player.cpp:325
void forwardActionSignalsToEventHandler()
Definition player.cpp:53
void rearrangeCounters()
void clearCustomZonesMenu()
PileZoneLogic * getRfgZone()
Definition player.h:166
void processPlayerInfo(const ServerInfo_Player &info)
Definition player.cpp:119
int getZoneId() const
Definition player.h:226
TableZoneLogic * getTableZone()
Definition player.h:176
void updateZones()
Definition player.cpp:461
bool getConceded() const
Definition player.h:214
bool conceded
Definition player.h:242
void removeArrow(ArrowItem *arrow)
Definition player.cpp:423
void activeChanged(bool active)
int zoneId
Definition player.h:246
PileZoneLogic * getDeckZone()
Definition player.h:156
void concededChanged(int playerId, bool conceded)
T * addZone(T *zone)
Definition player.h:140
ArrowItem * addArrow(const ServerInfo_Arrow &arrow)
Definition player.cpp:370
PlayerActions * playerActions
Definition player.h:237
void setDeck(DeckLoader &_deck)
Definition player.cpp:267
AbstractGame * game
Definition player.h:234
const QMap< QString, CardZoneLogic * > & getZones() const
Definition player.h:151
void setDialogSemaphore(const bool _active)
Definition player.h:221
StackZoneLogic * getStackZone()
Definition player.h:181
const QMap< int, ArrowItem * > & getArrows() const
Definition player.h:208
PlayerMenu * playerMenu
Definition player.h:238
void delArrow(int arrowId)
Definition player.cpp:414
PlayerEventHandler * playerEventHandler
Definition player.h:236
void addViewCustomZoneActionToCustomZoneMenu(QString zoneName)
PlayerGraphicsItem * getGraphicsItem()
Definition player.cpp:466
HandZoneLogic * getHandZone()
Definition player.h:186
PlayerInfo * playerInfo
Definition player.h:235
QMap< int, AbstractCounter * > getCounters()
Definition player.h:197
~Player() override
Definition player.cpp:75
bool active
Definition player.h:241
void setActive(bool _active)
Definition player.cpp:455
void deleteCard(CardItem *c)
Definition player.cpp:255
QMap< QString, CardZoneLogic * > zones
Definition player.h:247
QList< CardItem * > cardsToDelete
Definition player.h:252
GameScene * getGameScene()
Definition player.cpp:471
PlayerMenu * getPlayerMenu() const
Definition player.h:128
void deckChanged()
PileZoneLogic * getGraveZone()
Definition player.h:161
QMap< int, ArrowItem * > arrows
Definition player.h:249
void resetTopCardMenuActions()
void processCardAttachment(const ServerInfo_Player &info)
Definition player.cpp:217
PileZoneLogic * getSideboardZone()
Definition player.h:171
void delCounter(int counterId)
Definition player.cpp:304
void newCardAdded(AbstractCardItem *card)
DeckLoader * deck
Definition player.h:244
void initializeZones()
Definition player.cpp:62
PlayerActions * getPlayerActions() const
Definition player.h:113
void openDeckEditor(DeckLoader *deck)
void setZoneId(int _zoneId)
Definition player.cpp:113
PlayerEventHandler * getPlayerEventHandler() const
Definition player.h:118
QMap< int, AbstractCounter * > counters
Definition player.h:248
bool clearCardsToDelete()
Definition player.cpp:439
PlayerInfo * getPlayerInfo() const
Definition player.h:123
bool getActive() const
Definition player.h:99
void clear()
Definition player.cpp:88
void clearCounters()
Definition player.cpp:316
AbstractGame * getGame() const
Definition player.h:104
PlayerGraphicsItem * graphicsItem
Definition player.h:239
void clearArrows()
Definition player.cpp:430
Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, AbstractGame *_parent)
Definition player.cpp:32
Definition stack_zone_logic.h:12
Definition tab_game.h:57
Definition table_zone_logic.h:12
TODO: Document this.
TODO: Document this.
Definition phases_toolbar.h:18
TODO: Document this.
Q_LOGGING_CATEGORY(PlayerLog, "player")
const int MAX_TOKENS_PER_DIALOG
Definition player.h:62
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.