Cockatrice 2026-09-01-Development-3.1.0-beta.10
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
12#include "abstract_card_item.h"
13
15
16class CardDatabase;
17class CardDragItem;
18class CardZone;
19class ServerInfo_Card;
20class PlayerLogic;
21class QAction;
22class QColor;
23
25
27{
28 Q_OBJECT
29private:
31
32 QPoint gridPoint;
34 QList<CardItem *> attachedCards;
35
36 void prepareDelete();
37 void handleClickedToPlay(bool shiftHeld);
38public slots:
39 void deleteLater();
40
41public:
42 enum
43 {
45 };
46 [[nodiscard]] int type() const override
47 {
48 return Type;
49 }
50 explicit CardItem(PlayerLogic *_owner,
51 QGraphicsItem *parent = nullptr,
52 const CardRef &cardRef = {},
53 int _cardid = -1,
54 CardZoneLogic *_zone = nullptr);
55
56 void retranslateUi();
57 [[nodiscard]] CardState *getState() const
58 {
59 return state;
60 }
61 [[nodiscard]] CardZoneLogic *getZone() const
62 {
63 return state->getZone();
64 }
65 void setZone(CardZoneLogic *_zone);
66 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
67 [[nodiscard]] QPoint getGridPoint() const
68 {
69 return gridPoint;
70 }
71 void setGridPoint(const QPoint &_gridPoint)
72 {
73 gridPoint = _gridPoint;
74 }
75 [[nodiscard]] QPoint getGridPos() const
76 {
77 return gridPoint;
78 }
79 [[nodiscard]] PlayerLogic *getOwner() const
80 {
81 return owner;
82 }
83 void setOwner(PlayerLogic *_owner)
84 {
85 owner = _owner;
86 }
87 [[nodiscard]] bool getAttacking() const
88 {
89 return state->getAttacking();
90 }
91 void setAttacking(bool _attacking);
92 [[nodiscard]] const QMap<int, int> &getCounters() const
93 {
94 return state->getCounters();
95 }
96 void setCounter(int _id, int _value);
97 [[nodiscard]] QString getAnnotation() const
98 {
99 return state->getAnnotation();
100 }
101 void setAnnotation(const QString &_annotation);
102 [[nodiscard]] bool getDoesntUntap() const
103 {
104 return state->getDoesntUntap();
105 }
106 void setDoesntUntap(bool _doesntUntap);
107 [[nodiscard]] QString getPT() const
108 {
109 return state->getPT();
110 }
111 void setPT(const QString &_pt);
112 [[nodiscard]] bool getDestroyOnZoneChange() const
113 {
114 return state->getDestroyOnZoneChange();
115 }
116 void setDestroyOnZoneChange(bool _destroy)
117 {
118 state->setDestroyOnZoneChange(_destroy);
119 }
120 [[nodiscard]] CardItem *getAttachedTo() const
121 {
122 return state->getAttachedTo();
123 }
124 void setAttachedTo(CardItem *_attachedTo);
126 {
127 attachedCards.append(card);
128 }
130 {
131 attachedCards.removeOne(card);
132 }
133 [[nodiscard]] const QList<CardItem *> &getAttachedCards() const
134 {
135 return attachedCards;
136 }
137 void resetState(bool keepAnnotations = false);
138 void processCardInfo(const ServerInfo_Card &_info);
139
140 bool animationEvent() override;
141 CardDragItem *createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool forceFaceDown);
142 void deleteDragItem();
143 void drawArrow(const QColor &arrowColor);
144 void drawAttachArrow();
145 void playCard(bool faceDown);
146
165 static QVariantList parsePT(const QString &pt);
166
167protected:
168 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
169 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
170 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
171 QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
172};
173
174#endif
Base class for graphical card items, providing shared rendering, identity, and interaction logic.
const int ROTATION_DEGREES_PER_FRAME
Definition card_item.h:24
CardRef cardRef
Definition abstract_card_item.h:26
AbstractCardItem(QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, PlayerLogic *_owner=nullptr, int _id=-1)
Definition abstract_card_item.cpp:19
PlayerLogic * owner
Definition arrow_target.h:21
Core in-memory container for card and set data.
Definition card_database.h:30
Definition card_drag_item.h:15
Definition card_item.h:27
void setZone(CardZoneLogic *_zone)
Definition card_item.cpp:71
void deleteDragItem()
Definition card_item.cpp:267
void setOwner(PlayerLogic *_owner)
Definition card_item.h:83
bool animationEvent() override
Default: no per-tick animation. Subclasses override to animate.
Definition card_item.cpp:502
CardItem(PlayerLogic *_owner, QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, int _cardid=-1, CardZoneLogic *_zone=nullptr)
Definition card_item.cpp:25
QPoint getGridPoint() const
Definition card_item.h:67
@ Type
Definition card_item.h:44
void playCard(bool faceDown)
Definition card_item.cpp:392
bool getDoesntUntap() const
Definition card_item.h:102
void handleClickedToPlay(bool shiftHeld)
Definition card_item.cpp:464
const QList< CardItem * > & getAttachedCards() const
Definition card_item.h:133
void processCardInfo(const ServerInfo_Card &_info)
Definition card_item.cpp:234
void setDoesntUntap(bool _doesntUntap)
Definition card_item.cpp:172
void setAttacking(bool _attacking)
Definition card_item.cpp:154
QString getAnnotation() const
Definition card_item.h:97
void removeAttachedCard(CardItem *card)
Definition card_item.h:129
CardZoneLogic * getZone() const
Definition card_item.h:61
void setAnnotation(const QString &_annotation)
Definition card_item.cpp:166
PlayerLogic * getOwner() const
Definition card_item.h:79
void prepareDelete()
Definition card_item.cpp:41
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:493
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:415
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition card_item.cpp:80
void resetState(bool keepAnnotations=false)
Resets the fields that should be reset after a zone transition.
Definition card_item.cpp:222
bool getAttacking() const
Definition card_item.h:87
void setGridPoint(const QPoint &_gridPoint)
Definition card_item.h:71
bool getDestroyOnZoneChange() const
Definition card_item.h:112
CardState * getState() const
Definition card_item.h:57
QList< CardItem * > attachedCards
Definition card_item.h:34
void setCounter(int _id, int _value)
Definition card_item.cpp:160
void deleteLater()
Definition card_item.cpp:62
void retranslateUi()
Definition card_item.cpp:76
CardDragItem * createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool forceFaceDown)
Definition card_item.cpp:255
CardItem * getAttachedTo() const
Definition card_item.h:120
QString getPT() const
Definition card_item.h:107
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:332
int type() const override
Definition card_item.h:46
void setPT(const QString &_pt)
Definition card_item.cpp:178
void setDestroyOnZoneChange(bool _destroy)
Definition card_item.h:116
QPoint gridPoint
Definition card_item.h:32
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition card_item.cpp:477
const QMap< int, int > & getCounters() const
Definition card_item.h:92
QPoint getGridPos() const
Definition card_item.h:75
CardState * state
Definition card_item.h:30
void drawAttachArrow()
Definition card_item.cpp:307
void drawArrow(const QColor &arrowColor)
Definition card_item.cpp:275
void setAttachedTo(CardItem *_attachedTo)
Definition card_item.cpp:184
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
Definition card_item.cpp:530
void addAttachedCard(CardItem *card)
Definition card_item.h:125
CardDragItem * dragItem
Definition card_item.h:33
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
Definition serverinfo_card.proto:5