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