Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
player_graphics_item.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_PLAYER_GRAPHICS_ITEM_H
8#define COCKATRICE_PLAYER_GRAPHICS_ITEM_H
11#include "../game_scene.h"
12
13#include <QGraphicsObject>
15
16class HandZone;
17class PileZone;
18class PlayerDialogs;
19class PlayerMenu;
20class PlayerTarget;
21class StackZone;
22class TableZone;
23class ZoneViewZone;
24
25class PlayerGraphicsItem : public QGraphicsObject
26{
27 Q_OBJECT
28
29public:
30 enum
31 {
33 };
34 int type() const override
35 {
36 return Type;
37 }
38
39 static constexpr int counterAreaWidth = 55;
40
42 void initializeZones();
43
44 [[nodiscard]] QRectF boundingRect() const override;
45 qreal getMinimumWidth() const;
46 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
47 void processSceneSizeChange(int newPlayerWidth);
48
49 void setMirrored(bool _mirrored);
50
51 bool getMirrored() const
52 {
53 return mirrored;
54 }
55
57 {
58 return static_cast<GameScene *>(scene());
59 }
60
62 {
63 return player;
64 }
65
66 [[nodiscard]] PlayerMenu *getPlayerMenu() const
67 {
68 return playerMenu;
69 }
70
72 {
73 return playerArea;
74 }
75
77 {
78 return playerTarget;
79 }
80
81 CardZone *getZoneGraphicsItem(const QString &name) const
82 {
83 return zoneGraphicsItems.value(name, nullptr);
84 }
85
86 [[nodiscard]] PileZone *getDeckZoneGraphicsItem() const
87 {
89 }
90
92 {
94 }
95
97 {
99 }
100 [[nodiscard]] PileZone *getRfgZoneGraphicsItem() const
101 {
102 return rfgZoneGraphicsItem;
103 }
104 [[nodiscard]] TableZone *getTableZoneGraphicsItem() const
105 {
107 }
108 [[nodiscard]] StackZone *getStackZoneGraphicsItem() const
109 {
111 }
112 [[nodiscard]] HandZone *getHandZoneGraphicsItem() const
113 {
115 }
116
117public slots:
118 void onPlayerActiveChanged(bool _active);
119 void onCustomZoneAdded(QString customZoneName);
120 void onCounterAdded(CounterState *state);
121 void onCounterRemoved(int counterId);
122 void rearrangeCounters();
123 void retranslateUi();
124
125signals:
128 void mirroredChanged(bool isMirrored);
129 void cardInfoRequested(const CardRef &cardRef);
131
132private:
138 QMap<int, AbstractCounter *> counterWidgets;
139 QMap<QString, CardZone *> zoneGraphicsItems;
147 QRectF bRect;
149 bool handVisible = false;
150
152 QPixmap scaledPlaymatPixmap; // down-scaled copy of playmatPixmap for the current render size
153 QSize scaledPlaymatKey; // size bucket scaledPlaymatPixmap was rendered for
156 bool hasPlaymat = false;
157 QMetaObject::Connection playmatPixmapConnection;
158
159private slots:
160 void updateBoundingRect();
161 void rearrangeZones();
162 void clearPlaymat();
163 void updatePlaymat();
165
166private:
167 QPixmap scaledPlaymatFor(const QRectF &srcRect, const QSizeF &deviceDstSize);
168};
169
170#endif // COCKATRICE_PLAYER_GRAPHICS_ITEM_H
Definition card_zone.h:26
Definition counter_state.h:10
Manages the game board display including players, zones, cards, and animations.
Definition game_scene.h:43
Definition hand_zone.h:14
Definition pile_zone.h:18
Definition player_area.h:17
Definition player_dialogs.h:11
PileZone * deckZoneGraphicsItem
Definition player_graphics_item.h:140
TableZone * getTableZoneGraphicsItem() const
Definition player_graphics_item.h:104
HandZone * handZoneGraphicsItem
Definition player_graphics_item.h:146
PileZone * getDeckZoneGraphicsItem() const
Definition player_graphics_item.h:86
PlayerMenu * getPlayerMenu() const
Definition player_graphics_item.h:66
QMetaObject::Connection playmatPixmapConnection
Definition player_graphics_item.h:157
TableZone * tableZoneGraphicsItem
Definition player_graphics_item.h:144
void onCounterRemoved(int counterId)
Definition player_graphics_item.cpp:275
void clearPlaymat()
Definition player_graphics_item.cpp:449
PlayerTarget * getPlayerTarget() const
Definition player_graphics_item.h:76
PlaymatParams playmatParams
Definition player_graphics_item.h:154
CardZone * getZoneGraphicsItem(const QString &name) const
Definition player_graphics_item.h:81
QPixmap scaledPlaymatPixmap
Definition player_graphics_item.h:152
PlayerLogic * player
Definition player_graphics_item.h:133
void initializeZones()
Definition player_graphics_item.cpp:104
void processSceneSizeChange(int newPlayerWidth)
Definition player_graphics_item.cpp:227
void onCounterAdded(CounterState *state)
Definition player_graphics_item.cpp:249
PileZone * getSideboardZoneGraphicsItem() const
Definition player_graphics_item.h:91
PlayerGraphicsItem(PlayerLogic *player)
Definition player_graphics_item.cpp:24
PileZone * getGraveyardZoneGraphicsItem() const
Definition player_graphics_item.h:96
StackZone * getStackZoneGraphicsItem() const
Definition player_graphics_item.h:108
void retranslateUi()
Definition player_graphics_item.cpp:89
void onPlayerActiveChanged(bool _active)
Definition player_graphics_item.cpp:99
QPixmap scaledPlaymatFor(const QRectF &srcRect, const QSizeF &deviceDstSize)
Definition player_graphics_item.cpp:210
QString playmatAttribution
Definition player_graphics_item.h:155
bool hasPlaymat
Definition player_graphics_item.h:156
GameScene * getGameScene() const
Definition player_graphics_item.h:56
static constexpr int counterAreaWidth
Definition player_graphics_item.h:39
void onCustomZoneAdded(QString customZoneName)
Definition player_graphics_item.cpp:150
QSize scaledPlaymatKey
Definition player_graphics_item.h:153
QMap< int, AbstractCounter * > counterWidgets
Definition player_graphics_item.h:138
PileZone * graveyardZoneGraphicsItem
Definition player_graphics_item.h:142
PlayerDialogs * playerDialogs
Definition player_graphics_item.h:135
QPixmap playmatPixmap
Definition player_graphics_item.h:151
int type() const override
Definition player_graphics_item.h:34
PlayerMenu * playerMenu
Definition player_graphics_item.h:134
PlayerArea * getPlayerArea() const
Definition player_graphics_item.h:71
StackZone * stackZoneGraphicsItem
Definition player_graphics_item.h:145
QMap< QString, CardZone * > zoneGraphicsItems
Definition player_graphics_item.h:139
@ Type
Definition player_graphics_item.h:32
void rearrangeCounters()
Definition player_graphics_item.cpp:288
void cardInfoRequested(const CardRef &cardRef)
void updatePlaymat()
Definition player_graphics_item.cpp:370
QRectF boundingRect() const override
Definition player_graphics_item.cpp:155
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition player_graphics_item.cpp:170
void setMirrored(bool _mirrored)
Definition player_graphics_item.cpp:240
void playmatChanged(bool hasPlaymat)
PileZone * sideboardGraphicsItem
Definition player_graphics_item.h:141
qreal getMinimumWidth() const
Definition player_graphics_item.cpp:160
void updateBoundingRect()
Definition player_graphics_item.cpp:352
bool handVisible
Definition player_graphics_item.h:149
HandZone * getHandZoneGraphicsItem() const
Definition player_graphics_item.h:112
void rearrangeZones()
Definition player_graphics_item.cpp:302
bool getMirrored() const
Definition player_graphics_item.h:51
void mirroredChanged(bool isMirrored)
PileZone * getRfgZoneGraphicsItem() const
Definition player_graphics_item.h:100
PlayerArea * playerArea
Definition player_graphics_item.h:136
PileZone * rfgZoneGraphicsItem
Definition player_graphics_item.h:143
PlayerTarget * playerTarget
Definition player_graphics_item.h:137
PlayerLogic * getLogic() const
Definition player_graphics_item.h:61
bool mirrored
Definition player_graphics_item.h:148
void onPlaymatPixmapReady()
Definition player_graphics_item.cpp:462
QRectF bRect
Definition player_graphics_item.h:147
Definition player_logic.h:65
Definition player_menu.h:30
Definition player_target.h:41
Definition stack_zone.h:14
TableZone is the grid based rect where CardItems may be placed.
Definition table_zone.h:24
Definition view_zone.h:35
Defines the DeckList class, which manages a full deck structure including cards, zones,...
@ typeOther
Definition graphics_item_type.h:19
Definition card_ref.h:14
Positioning parameters for a playmat card image.
Definition playmat_params.h:18