Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
abstract_card_item.h
Go to the documentation of this file.
1
6
7#ifndef ABSTRACTCARDITEM_H
8#define ABSTRACTCARDITEM_H
9
10#include "../animated_item.h"
11#include "arrow_target.h"
12#include "graphics_item_type.h"
13
14#include <QColor>
15#include <QGraphicsItem>
16#include <QSizeF>
17#include <QString>
18#include <QtGlobal>
21#include <qtmetamacros.h>
22
23class PlayerLogic;
24class CardInfo;
25class QPainter;
26class QPoint;
27
29{
30 Q_OBJECT
31protected:
33 int id;
35 bool tapped;
38 QString color;
39 QColor bgColor;
40
41private:
46private slots:
47 void pixmapUpdated();
48
49public slots:
50 void refreshCardInfo();
51
52signals:
54 void showCardInfoPopup(const QPoint &pos, const CardRef &cardRef);
55 void deleteCardInfoPopup(QString cardName);
57 void cardShiftClicked(QString cardName);
58 void rightClicked(AbstractCardItem *card, QPoint screenPos);
62 void selectionChanged(AbstractCardItem *card, bool selected);
63
64public:
65 enum
66 {
68 };
69 int type() const override
70 {
71 return Type;
72 }
73 explicit AbstractCardItem(QGraphicsItem *parent = nullptr,
74 const CardRef &cardRef = {},
75 PlayerLogic *_owner = nullptr,
76 int _id = -1);
77 ~AbstractCardItem() override;
78 QRectF boundingRect() const override;
79 QPainterPath shape() const override;
80 QSizeF getTranslatedSize(QPainter *painter) const;
81 void paintPicture(QPainter *painter, const QSizeF &translatedSize, int angle);
82 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
84 {
85 return exactCard;
86 }
87 const CardInfo &getCardInfo() const;
88 int getId() const
89 {
90 return id;
91 }
92 void setId(int _id)
93 {
94 id = _id;
95 }
96 QString getName() const
97 {
98 return cardRef.name;
99 }
100 QString getProviderId() const
101 {
102 return cardRef.providerId;
103 }
104 void setCardRef(const CardRef &_cardRef);
106 {
107 return cardRef;
108 }
109 qreal getRealZValue() const
110 {
111 return realZValue;
112 }
113 void setRealZValue(qreal _zValue);
114 void setHovered(bool _hovered);
115 bool getIsHovered() const
116 {
117 return isHovered;
118 }
119 QString getColor() const
120 {
121 return color;
122 }
123 void setColor(const QString &_color);
124 bool getTapped() const
125 {
126 return tapped;
127 }
128 void setTapped(bool _tapped, bool canAnimate = false);
129 bool getFaceDown() const
130 {
131 return facedown;
132 }
133 void setFaceDown(bool _facedown);
134 void processHoverEvent();
141
143 bool animationEvent() override;
144
145protected:
146 void transformPainter(QPainter *painter, const QSizeF &translatedSize, int angle);
147 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
148 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
149 QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) override;
150 void cacheBgColor();
160 virtual bool doubleClickActsOnSelection() const;
161};
162
163#endif
Interface for scene items driven by GameScene's shared animation timer.
qreal realZValue
Definition abstract_card_item.h:43
void playSelectedFaceDown(AbstractCardItem *card)
void setFaceDown(bool _facedown)
Definition abstract_card_item.cpp:341
QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) override
Definition abstract_card_item.cpp:431
bool tapped
Definition abstract_card_item.h:35
CardRef cardRef
Definition abstract_card_item.h:34
qreal getRealZValue() const
Definition abstract_card_item.h:109
void setId(int _id)
Definition abstract_card_item.h:92
int type() const override
Definition abstract_card_item.h:69
QPainterPath shape() const override
Definition abstract_card_item.cpp:78
void refreshCardInfo()
Definition abstract_card_item.cpp:93
void deleteCardInfoPopup(QString cardName)
void setTapped(bool _tapped, bool canAnimate=false)
Definition abstract_card_item.cpp:317
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition abstract_card_item.cpp:379
bool pendingSelectionCollapse
Definition abstract_card_item.h:44
void cardShiftClicked(QString cardName)
QSizeF getTranslatedSize(QPainter *painter) const
Definition abstract_card_item.cpp:130
QRectF boundingRect() const override
Definition abstract_card_item.cpp:73
bool getFaceDown() const
Definition abstract_card_item.h:129
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition abstract_card_item.cpp:347
int id
Definition abstract_card_item.h:33
void transformPainter(QPainter *painter, const QSizeF &translatedSize, int angle)
Definition abstract_card_item.cpp:136
void pixmapUpdated()
Definition abstract_card_item.cpp:87
AbstractCardItem(QGraphicsItem *parent=nullptr, const CardRef &cardRef={}, PlayerLogic *_owner=nullptr, int _id=-1)
Definition abstract_card_item.cpp:45
void hovered(AbstractCardItem *card)
void setRealZValue(qreal _zValue)
Definition abstract_card_item.cpp:119
void deleteCardInfoPopup()
Definition abstract_card_item.h:137
bool animationEvent() override
Default: no per-tick animation. Subclasses override to animate.
Definition abstract_card_item.cpp:336
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition abstract_card_item.cpp:213
virtual bool doubleClickActsOnSelection() const
Whether a double-click on this item acts on the whole selection.
Definition abstract_card_item.cpp:421
void playSelected(AbstractCardItem *card)
void cacheBgColor()
Definition abstract_card_item.cpp:283
void sigPixmapUpdated()
void paintPicture(QPainter *painter, const QSizeF &translatedSize, int angle)
Definition abstract_card_item.cpp:155
QString getColor() const
Definition abstract_card_item.h:119
CardRef getCardRef() const
Definition abstract_card_item.h:105
bool facedown
Definition abstract_card_item.h:36
int selectionCollapseGeneration
Guards the deferred collapse timer against stale firings.
Definition abstract_card_item.h:45
bool getIsHovered() const
Definition abstract_card_item.h:115
void rightClicked(AbstractCardItem *card, QPoint screenPos)
void setColor(const QString &_color)
Definition abstract_card_item.cpp:276
QString getName() const
Definition abstract_card_item.h:96
ExactCard getCard() const
Definition abstract_card_item.h:83
@ Type
Definition abstract_card_item.h:67
QString getProviderId() const
Definition abstract_card_item.h:100
void showCardInfoPopup(const QPoint &pos, const CardRef &cardRef)
void cancelPendingSelectionCollapse()
Drop a pending collapse and disarm any deferred collapse timer.
Definition abstract_card_item.cpp:415
void hideSelected(AbstractCardItem *card)
QString color
Definition abstract_card_item.h:38
void processHoverEvent()
Definition abstract_card_item.cpp:426
QColor bgColor
Definition abstract_card_item.h:39
bool getTapped() const
Definition abstract_card_item.h:124
void setCardRef(const CardRef &_cardRef)
Definition abstract_card_item.cpp:238
bool isHovered
Definition abstract_card_item.h:42
const CardInfo & getCardInfo() const
Definition abstract_card_item.cpp:114
ExactCard exactCard
Definition abstract_card_item.h:32
void setHovered(bool _hovered)
Definition abstract_card_item.cpp:253
void selectionChanged(AbstractCardItem *card, bool selected)
int getId() const
Definition abstract_card_item.h:88
int tapAngle
Definition abstract_card_item.h:37
ArrowTarget(PlayerLogic *_owner, QGraphicsItem *parent=nullptr)
Definition arrow_target.cpp:7
Represents a card and its associated metadata, properties, and relationships.
Definition card_info.h:54
Represents a specific card instance, defined by its CardInfo and a particular printing.
Definition exact_card.h:24
Definition animated_item.h:15
Definition player_logic.h:56
@ typeCard
Definition graphics_item_type.h:14
Definition card_ref.h:14
QString providerId
Definition card_ref.h:16
QString name
Definition card_ref.h:15