Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform 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
14
15class CardDatabase;
16class CardDragItem;
17class CardZone;
18class ServerInfo_Card;
19class Player;
20class QAction;
21class QColor;
22
23const int MAX_COUNTERS_ON_CARD = 999;
24const float CARD_WIDTH_HALF = CARD_WIDTH / 2;
25const float CARD_HEIGHT_HALF = CARD_HEIGHT / 2;
27
29{
30 Q_OBJECT
31private:
34 QMap<int, int> counters;
35 QString annotation;
36 QString pt;
39 QPoint gridPoint;
42 QList<CardItem *> attachedCards;
43
44 void prepareDelete();
45 void handleClickedToPlay(bool shiftHeld);
46public slots:
47 void deleteLater();
48
49public:
50 enum
51 {
53 };
54 [[nodiscard]] int type() const override
55 {
56 return Type;
57 }
58 explicit CardItem(Player *_owner,
59 QGraphicsItem *parent = nullptr,
60 const CardRef &cardRef = {},
61 int _cardid = -1,
62 CardZoneLogic *_zone = nullptr);
63
64 void retranslateUi();
65 [[nodiscard]] CardZoneLogic *getZone() const
66 {
67 return zone;
68 }
69 void setZone(CardZoneLogic *_zone);
70 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
71 [[nodiscard]] QPoint getGridPoint() const
72 {
73 return gridPoint;
74 }
75 void setGridPoint(const QPoint &_gridPoint)
76 {
77 gridPoint = _gridPoint;
78 }
79 [[nodiscard]] QPoint getGridPos() const
80 {
81 return gridPoint;
82 }
83 [[nodiscard]] Player *getOwner() const
84 {
85 return owner;
86 }
87 void setOwner(Player *_owner)
88 {
89 owner = _owner;
90 }
91 [[nodiscard]] bool getAttacking() const
92 {
93 return attacking;
94 }
95 void setAttacking(bool _attacking);
96 [[nodiscard]] const QMap<int, int> &getCounters() const
97 {
98 return counters;
99 }
100 void setCounter(int _id, int _value);
101 [[nodiscard]] QString getAnnotation() const
102 {
103 return annotation;
104 }
105 void setAnnotation(const QString &_annotation);
106 [[nodiscard]] bool getDoesntUntap() const
107 {
108 return doesntUntap;
109 }
110 void setDoesntUntap(bool _doesntUntap);
111 [[nodiscard]] QString getPT() const
112 {
113 return pt;
114 }
115 void setPT(const QString &_pt);
116 [[nodiscard]] bool getDestroyOnZoneChange() const
117 {
118 return destroyOnZoneChange;
119 }
120 void setDestroyOnZoneChange(bool _destroy)
121 {
122 destroyOnZoneChange = _destroy;
123 }
124 [[nodiscard]] CardItem *getAttachedTo() const
125 {
126 return attachedTo;
127 }
128 void setAttachedTo(CardItem *_attachedTo);
130 {
131 attachedCards.append(card);
132 }
134 {
135 attachedCards.removeOne(card);
136 }
137 [[nodiscard]] const QList<CardItem *> &getAttachedCards() const
138 {
139 return attachedCards;
140 }
141 void resetState(bool keepAnnotations = false);
142 void processCardInfo(const ServerInfo_Card &_info);
143
144 bool animationEvent();
145 CardDragItem *createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool faceDown);
146 void deleteDragItem();
147 void drawArrow(const QColor &arrowColor);
148 void drawAttachArrow();
149 void playCard(bool faceDown);
150
151protected:
152 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
153 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
154 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
155 QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
156};
157
158#endif
static const float CARD_HEIGHT_HALF
Definition abstract_card_drag_item.cpp:11
static const float CARD_WIDTH_HALF
Definition abstract_card_drag_item.cpp:10
TODO: Document this.
const int CARD_WIDTH
Definition abstract_card_item.h:18
const int CARD_HEIGHT
Definition abstract_card_item.h:19
const int MAX_COUNTERS_ON_CARD
Definition card_item.h:23
const int ROTATION_DEGREES_PER_FRAME
Definition card_item.h:26
TODO: Document this.
CardRef cardRef
Definition abstract_card_item.h:27
AbstractCardItem(QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, Player *_owner=nullptr, int _id=-1)
Definition abstract_card_item.cpp:15
Player * 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:29
void setZone(CardZoneLogic *_zone)
Definition card_item.cpp:64
void deleteDragItem()
Definition card_item.cpp:266
QMap< int, int > counters
Definition card_item.h:34
QPoint getGridPoint() const
Definition card_item.h:71
void playCard(bool faceDown)
Definition card_item.cpp:378
bool getDoesntUntap() const
Definition card_item.h:106
void setOwner(Player *_owner)
Definition card_item.h:87
void handleClickedToPlay(bool shiftHeld)
Definition card_item.cpp:415
const QList< CardItem * > & getAttachedCards() const
Definition card_item.h:137
CardZoneLogic * zone
Definition card_item.h:32
void processCardInfo(const ServerInfo_Card &_info)
Definition card_item.cpp:233
void setDoesntUntap(bool _doesntUntap)
Definition card_item.cpp:168
void setAttacking(bool _attacking)
Definition card_item.cpp:147
QString getAnnotation() const
Definition card_item.h:101
void removeAttachedCard(CardItem *card)
Definition card_item.h:133
CardZoneLogic * getZone() const
Definition card_item.h:65
void setAnnotation(const QString &_annotation)
Definition card_item.cpp:162
CardItem * attachedTo
Definition card_item.h:41
void prepareDelete()
Definition card_item.cpp:35
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:450
bool attacking
Definition card_item.h:33
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition card_item.cpp:73
void resetState(bool keepAnnotations=false)
Definition card_item.cpp:215
bool getAttacking() const
Definition card_item.h:91
void setGridPoint(const QPoint &_gridPoint)
Definition card_item.h:75
bool getDestroyOnZoneChange() const
Definition card_item.h:116
QList< CardItem * > attachedCards
Definition card_item.h:42
void setCounter(int _id, int _value)
Definition card_item.cpp:153
void deleteLater()
Definition card_item.cpp:56
void retranslateUi()
Definition card_item.cpp:69
Player * getOwner() const
Definition card_item.h:83
CardItem * getAttachedTo() const
Definition card_item.h:124
QString getPT() const
Definition card_item.h:111
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:325
int type() const override
Definition card_item.h:54
@ Type
Definition card_item.h:52
CardDragItem * createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool faceDown)
Definition card_item.cpp:254
void setPT(const QString &_pt)
Definition card_item.cpp:174
void setDestroyOnZoneChange(bool _destroy)
Definition card_item.h:120
CardItem(Player *_owner, QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, int _cardid=-1, CardZoneLogic *_zone=nullptr)
Definition card_item.cpp:23
QPoint gridPoint
Definition card_item.h:39
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:428
const QMap< int, int > & getCounters() const
Definition card_item.h:96
bool destroyOnZoneChange
Definition card_item.h:37
bool doesntUntap
Definition card_item.h:38
QPoint getGridPos() const
Definition card_item.h:79
void drawAttachArrow()
Definition card_item.cpp:303
void drawArrow(const QColor &arrowColor)
Definition card_item.cpp:274
QString pt
Definition card_item.h:36
void setAttachedTo(CardItem *_attachedTo)
Definition card_item.cpp:180
QString annotation
Definition card_item.h:35
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
Definition card_item.cpp:486
void addAttachedCard(CardItem *card)
Definition card_item.h:129
CardDragItem * dragItem
Definition card_item.h:40
bool animationEvent()
Definition card_item.cpp:459
Definition card_zone_logic.h:26
Definition card_zone.h:26
Definition player.h:65
@ typeCard
Definition graphics_item_type.h:14
Definition card_ref.h:14