Cockatrice 2026-10-19-Development-3.1.2-beta.2
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
10#include "../game_scene.h"
12
13#include <QGraphicsObject>
14#include <QMap>
15#include <QMetaObject>
16#include <QPixmap>
17#include <QRectF>
18#include <QSize>
19#include <QSizeF>
20#include <QString>
21#include <QtGlobal>
22#include <qtmetamacros.h>
23
24class HandZone;
25class PileZone;
26class PlayerDialogs;
27class PlayerMenu;
28class PlayerTarget;
29class StackZone;
30class TableZone;
31class AbstractCounter;
32class CardZone;
33class CounterState;
34class PlayerArea;
35class PlayerLogic;
36struct CardRef;
37
38class PlayerGraphicsItem : public QGraphicsObject
39{
40 Q_OBJECT
41
42public:
43 enum
44 {
46 };
47 int type() const override
48 {
49 return Type;
50 }
51
52 static constexpr int counterAreaWidth = 55;
53
55 void initializeZones();
56
57 [[nodiscard]] QRectF boundingRect() const override;
58 qreal getMinimumWidth() const;
59 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
60 void processSceneSizeChange(int newPlayerWidth);
61
62 void setMirrored(bool _mirrored);
63
64 bool getMirrored() const
65 {
66 return mirrored;
67 }
68
70 {
71 return static_cast<GameScene *>(scene());
72 }
73
75 {
76 return player;
77 }
78
79 [[nodiscard]] PlayerMenu *getPlayerMenu() const
80 {
81 return playerMenu;
82 }
83
85 {
86 return playerArea;
87 }
88
90 {
91 return playerTarget;
92 }
93
94 CardZone *getZoneGraphicsItem(const QString &name) const
95 {
96 return zoneGraphicsItems.value(name, nullptr);
97 }
98
99 [[nodiscard]] PileZone *getDeckZoneGraphicsItem() const
100 {
102 }
103
105 {
107 }
108
110 {
112 }
113 [[nodiscard]] PileZone *getRfgZoneGraphicsItem() const
114 {
115 return rfgZoneGraphicsItem;
116 }
117 [[nodiscard]] TableZone *getTableZoneGraphicsItem() const
118 {
120 }
121 [[nodiscard]] StackZone *getStackZoneGraphicsItem() const
122 {
124 }
125 [[nodiscard]] HandZone *getHandZoneGraphicsItem() const
126 {
128 }
129
130public slots:
131 void onPlayerActiveChanged(bool _active);
132 void onCustomZoneAdded(QString customZoneName);
133 void onCounterAdded(CounterState *state);
134 void onCounterRemoved(int counterId);
135 void rearrangeCounters();
136 void retranslateUi();
137
138signals:
141 void mirroredChanged(bool isMirrored);
142 void cardInfoRequested(const CardRef &cardRef);
144
145private:
160 QRectF bRect;
162 bool handVisible = false;
163
165 QPixmap scaledPlaymatPixmap; // down-scaled copy of playmatPixmap for the current render size
166 QSize scaledPlaymatKey; // size bucket scaledPlaymatPixmap was rendered for
169 bool hasPlaymat = false;
170 QMetaObject::Connection playmatPixmapConnection;
171
172private slots:
173 void updateBoundingRect();
174 void rearrangeZones();
175 void clearPlaymat();
176 void updatePlaymat();
178
179private:
180 QPixmap scaledPlaymatFor(const QRectF &srcRect, const QSizeF &deviceDstSize);
181};
182
183#endif // COCKATRICE_PLAYER_GRAPHICS_ITEM_H
Definition abstract_counter.h:27
Definition card_zone.h:35
Definition counter_state.h:12
Manages the game board display including players, zones, cards, and animations.
Definition game_scene.h:60
Definition hand_zone.h:21
Definition pile_zone.h:22
Definition player_area.h:24
Definition player_dialogs.h:25
PileZone * deckZoneGraphicsItem
Definition player_graphics_item.h:153
TableZone * getTableZoneGraphicsItem() const
Definition player_graphics_item.h:117
HandZone * handZoneGraphicsItem
Definition player_graphics_item.h:159
PileZone * getDeckZoneGraphicsItem() const
Definition player_graphics_item.h:99
PlayerMenu * getPlayerMenu() const
Definition player_graphics_item.h:79
QMetaObject::Connection playmatPixmapConnection
Definition player_graphics_item.h:170
TableZone * tableZoneGraphicsItem
Definition player_graphics_item.h:157
void onCounterRemoved(int counterId)
Definition player_graphics_item.cpp:303
void clearPlaymat()
Definition player_graphics_item.cpp:477
PlayerTarget * getPlayerTarget() const
Definition player_graphics_item.h:89
PlaymatParams playmatParams
Definition player_graphics_item.h:167
CardZone * getZoneGraphicsItem(const QString &name) const
Definition player_graphics_item.h:94
QPixmap scaledPlaymatPixmap
Definition player_graphics_item.h:165
PlayerLogic * player
Definition player_graphics_item.h:146
void initializeZones()
Definition player_graphics_item.cpp:132
void processSceneSizeChange(int newPlayerWidth)
Definition player_graphics_item.cpp:255
void onCounterAdded(CounterState *state)
Definition player_graphics_item.cpp:277
PileZone * getSideboardZoneGraphicsItem() const
Definition player_graphics_item.h:104
PlayerGraphicsItem(PlayerLogic *player)
Definition player_graphics_item.cpp:52
PileZone * getGraveyardZoneGraphicsItem() const
Definition player_graphics_item.h:109
StackZone * getStackZoneGraphicsItem() const
Definition player_graphics_item.h:121
void retranslateUi()
Definition player_graphics_item.cpp:117
void onPlayerActiveChanged(bool _active)
Definition player_graphics_item.cpp:127
QPixmap scaledPlaymatFor(const QRectF &srcRect, const QSizeF &deviceDstSize)
Definition player_graphics_item.cpp:238
QString playmatAttribution
Definition player_graphics_item.h:168
bool hasPlaymat
Definition player_graphics_item.h:169
GameScene * getGameScene() const
Definition player_graphics_item.h:69
static constexpr int counterAreaWidth
Definition player_graphics_item.h:52
void onCustomZoneAdded(QString customZoneName)
Definition player_graphics_item.cpp:178
QSize scaledPlaymatKey
Definition player_graphics_item.h:166
QMap< int, AbstractCounter * > counterWidgets
Definition player_graphics_item.h:151
PileZone * graveyardZoneGraphicsItem
Definition player_graphics_item.h:155
PlayerDialogs * playerDialogs
Definition player_graphics_item.h:148
QPixmap playmatPixmap
Definition player_graphics_item.h:164
int type() const override
Definition player_graphics_item.h:47
PlayerMenu * playerMenu
Definition player_graphics_item.h:147
PlayerArea * getPlayerArea() const
Definition player_graphics_item.h:84
StackZone * stackZoneGraphicsItem
Definition player_graphics_item.h:158
QMap< QString, CardZone * > zoneGraphicsItems
Definition player_graphics_item.h:152
@ Type
Definition player_graphics_item.h:45
void rearrangeCounters()
Definition player_graphics_item.cpp:316
void cardInfoRequested(const CardRef &cardRef)
void updatePlaymat()
Definition player_graphics_item.cpp:398
QRectF boundingRect() const override
Definition player_graphics_item.cpp:183
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition player_graphics_item.cpp:198
void setMirrored(bool _mirrored)
Definition player_graphics_item.cpp:268
void playmatChanged(bool hasPlaymat)
PileZone * sideboardGraphicsItem
Definition player_graphics_item.h:154
qreal getMinimumWidth() const
Definition player_graphics_item.cpp:188
void updateBoundingRect()
Definition player_graphics_item.cpp:380
bool handVisible
Definition player_graphics_item.h:162
HandZone * getHandZoneGraphicsItem() const
Definition player_graphics_item.h:125
void rearrangeZones()
Definition player_graphics_item.cpp:330
bool getMirrored() const
Definition player_graphics_item.h:64
void mirroredChanged(bool isMirrored)
PileZone * getRfgZoneGraphicsItem() const
Definition player_graphics_item.h:113
PlayerArea * playerArea
Definition player_graphics_item.h:149
PileZone * rfgZoneGraphicsItem
Definition player_graphics_item.h:156
PlayerTarget * playerTarget
Definition player_graphics_item.h:150
PlayerLogic * getLogic() const
Definition player_graphics_item.h:74
bool mirrored
Definition player_graphics_item.h:161
void onPlaymatPixmapReady()
Definition player_graphics_item.cpp:490
QRectF bRect
Definition player_graphics_item.h:160
Definition player_logic.h:56
Definition player_menu.h:34
Definition player_target.h:45
Definition game.h:18
Definition stack_zone.h:19
TableZone is the grid based rect where CardItems may be placed.
Definition table_zone.h:38
@ typeOther
Definition graphics_item_type.h:19
Definition card_ref.h:14
Positioning parameters for a playmat card image.
Definition playmat_params.h:18