Cockatrice 2026-06-01-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_item.h
Go to the documentation of this file.
1
6
7#ifndef CARDITEM_H
8#define CARDITEM_H
9
11#include "abstract_card_item.h"
12#include "card_state.h"
13
16
17class CardDatabase;
18class CardDragItem;
19class CardZone;
20class ServerInfo_Card;
21class PlayerLogic;
22class QAction;
23class QColor;
24
26
28{
29 Q_OBJECT
30private:
32
33 QPoint gridPoint;
35 QList<CardItem *> attachedCards;
36
37 void prepareDelete();
38 void handleClickedToPlay(bool shiftHeld);
39public slots:
40 void deleteLater();
41
42public:
43 enum
44 {
46 };
47 [[nodiscard]] int type() const override
48 {
49 return Type;
50 }
51 explicit CardItem(PlayerLogic *_owner,
52 QGraphicsItem *parent = nullptr,
53 const CardRef &cardRef = {},
54 int _cardid = -1,
55 CardZoneLogic *_zone = nullptr);
56
57 void retranslateUi();
58 [[nodiscard]] CardState *getState() const
59 {
60 return state;
61 }
62 [[nodiscard]] CardZoneLogic *getZone() const
63 {
64 return state->getZone();
65 }
66 void setZone(CardZoneLogic *_zone);
67 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
68 [[nodiscard]] QPoint getGridPoint() const
69 {
70 return gridPoint;
71 }
72 void setGridPoint(const QPoint &_gridPoint)
73 {
74 gridPoint = _gridPoint;
75 }
76 [[nodiscard]] QPoint getGridPos() const
77 {
78 return gridPoint;
79 }
80 [[nodiscard]] PlayerLogic *getOwner() const
81 {
82 return owner;
83 }
84 void setOwner(PlayerLogic *_owner)
85 {
86 owner = _owner;
87 }
88 [[nodiscard]] bool getAttacking() const
89 {
90 return state->getAttacking();
91 }
92 void setAttacking(bool _attacking);
93 [[nodiscard]] const QMap<int, int> &getCounters() const
94 {
95 return state->getCounters();
96 }
97 void setCounter(int _id, int _value);
98 [[nodiscard]] QString getAnnotation() const
99 {
100 return state->getAnnotation();
101 }
102 void setAnnotation(const QString &_annotation);
103 [[nodiscard]] bool getDoesntUntap() const
104 {
105 return state->getDoesntUntap();
106 }
107 void setDoesntUntap(bool _doesntUntap);
108 [[nodiscard]] QString getPT() const
109 {
110 return state->getPT();
111 }
112 void setPT(const QString &_pt);
113 [[nodiscard]] bool getDestroyOnZoneChange() const
114 {
115 return state->getDestroyOnZoneChange();
116 }
117 void setDestroyOnZoneChange(bool _destroy)
118 {
119 state->setDestroyOnZoneChange(_destroy);
120 }
121 [[nodiscard]] CardItem *getAttachedTo() const
122 {
123 return state->getAttachedTo();
124 }
125 void setAttachedTo(CardItem *_attachedTo);
127 {
128 attachedCards.append(card);
129 }
131 {
132 attachedCards.removeOne(card);
133 }
134 [[nodiscard]] const QList<CardItem *> &getAttachedCards() const
135 {
136 return attachedCards;
137 }
138 void resetState(bool keepAnnotations = false);
139 void processCardInfo(const ServerInfo_Card &_info);
140
141 bool animationEvent();
142 CardDragItem *createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool forceFaceDown);
143 void deleteDragItem();
144 void drawArrow(const QColor &arrowColor);
145 void drawAttachArrow();
146 void playCard(bool faceDown);
147
166 static QVariantList parsePT(const QString &pt);
167
168protected:
169 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
170 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
171 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
172 QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
173};
174
175#endif
Base class for graphical card items, providing shared rendering, identity, and interaction logic.
const int ROTATION_DEGREES_PER_FRAME
Definition card_item.h:25
CardRef cardRef
Definition abstract_card_item.h:25
AbstractCardItem(QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, PlayerLogic *_owner=nullptr, int _id=-1)
Definition abstract_card_item.cpp:16
PlayerLogic * owner
Definition arrow_target.h:21
Core in-memory container for card and set data.
Definition card_database.h:29
Definition card_drag_item.h:15
Definition card_item.h:28
void setZone(CardZoneLogic *_zone)
Definition card_item.cpp:69
void deleteDragItem()
Definition card_item.cpp:265
void setOwner(PlayerLogic *_owner)
Definition card_item.h:84
CardItem(PlayerLogic *_owner, QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, int _cardid=-1, CardZoneLogic *_zone=nullptr)
Definition card_item.cpp:23
QPoint getGridPoint() const
Definition card_item.h:68
void playCard(bool faceDown)
Definition card_item.cpp:390
bool getDoesntUntap() const
Definition card_item.h:103
void handleClickedToPlay(bool shiftHeld)
Definition card_item.cpp:459
const QList< CardItem * > & getAttachedCards() const
Definition card_item.h:134
void processCardInfo(const ServerInfo_Card &_info)
Definition card_item.cpp:232
void setDoesntUntap(bool _doesntUntap)
Definition card_item.cpp:170
void setAttacking(bool _attacking)
Definition card_item.cpp:152
QString getAnnotation() const
Definition card_item.h:98
void removeAttachedCard(CardItem *card)
Definition card_item.h:130
CardZoneLogic * getZone() const
Definition card_item.h:62
void setAnnotation(const QString &_annotation)
Definition card_item.cpp:164
PlayerLogic * getOwner() const
Definition card_item.h:80
void prepareDelete()
Definition card_item.cpp:39
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:494
static QVariantList parsePT(const QString &pt)
Parses a string representing a p/t in order to extract the values from it.
Definition card_item.cpp:410
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition card_item.cpp:78
void resetState(bool keepAnnotations=false)
Resets the fields that should be reset after a zone transition.
Definition card_item.cpp:220
bool getAttacking() const
Definition card_item.h:88
void setGridPoint(const QPoint &_gridPoint)
Definition card_item.h:72
bool getDestroyOnZoneChange() const
Definition card_item.h:113
CardState * getState() const
Definition card_item.h:58
QList< CardItem * > attachedCards
Definition card_item.h:35
void setCounter(int _id, int _value)
Definition card_item.cpp:158
void deleteLater()
Definition card_item.cpp:60
void retranslateUi()
Definition card_item.cpp:74
CardDragItem * createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool forceFaceDown)
Definition card_item.cpp:253
CardItem * getAttachedTo() const
Definition card_item.h:121
QString getPT() const
Definition card_item.h:108
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:330
int type() const override
Definition card_item.h:47
@ Type
Definition card_item.h:45
void setPT(const QString &_pt)
Definition card_item.cpp:176
void setDestroyOnZoneChange(bool _destroy)
Definition card_item.h:117
QPoint gridPoint
Definition card_item.h:33
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:472
const QMap< int, int > & getCounters() const
Definition card_item.h:93
QPoint getGridPos() const
Definition card_item.h:76
CardState * state
Definition card_item.h:31
void drawAttachArrow()
Definition card_item.cpp:305
void drawArrow(const QColor &arrowColor)
Definition card_item.cpp:273
void setAttachedTo(CardItem *_attachedTo)
Definition card_item.cpp:182
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
Definition card_item.cpp:531
void addAttachedCard(CardItem *card)
Definition card_item.h:126
CardDragItem * dragItem
Definition card_item.h:34
bool animationEvent()
Definition card_item.cpp:503
Definition card_state.h:10
Definition card_zone_logic.h:26
Definition card_zone.h:26
Definition player_logic.h:65
@ typeCard
Definition graphics_item_type.h:14
Definition card_ref.h:14