Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
arrow_item.h
Go to the documentation of this file.
1
6
7#ifndef ARROWITEM_H
8#define ARROWITEM_H
9
10#include <QGraphicsItem>
11
12class CardItem;
13class QGraphicsSceneMouseEvent;
14class QMenu;
15class Player;
16class ArrowTarget;
17
18class ArrowItem : public QObject, public QGraphicsItem
19{
20 Q_OBJECT
21 Q_INTERFACES(QGraphicsItem)
22private:
23 QPainterPath path;
24 QMenu *menu;
25
26protected:
28 int id;
31 QColor color;
33 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
34
35public:
36 ArrowItem(Player *_player, int _id, ArrowTarget *_startItem, ArrowTarget *_targetItem, const QColor &color);
37 ~ArrowItem() override;
38 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
39 [[nodiscard]] QRectF boundingRect() const override
40 {
41 return path.boundingRect();
42 }
43 [[nodiscard]] QPainterPath shape() const override
44 {
45 return path;
46 }
47 void updatePath();
48 void updatePath(const QPointF &endPoint);
49
50 [[nodiscard]] int getId() const
51 {
52 return id;
53 }
54 [[nodiscard]] Player *getPlayer() const
55 {
56 return player;
57 }
59 {
60 startItem = _item;
61 }
63 {
64 targetItem = _item;
65 }
66 [[nodiscard]] ArrowTarget *getStartItem() const
67 {
68 return startItem;
69 }
70 [[nodiscard]] ArrowTarget *getTargetItem() const
71 {
72 return targetItem;
73 }
74 void setTargetLocked(bool _targetLocked)
75 {
76 targetLocked = _targetLocked;
77 }
78 void delArrow();
79};
80
82{
83 Q_OBJECT
84private:
86 QList<ArrowDragItem *> childArrows;
87
88public:
89 ArrowDragItem(Player *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase);
90 void addChildArrow(ArrowDragItem *childArrow);
91
92protected:
93 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
94 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
95};
96
98{
99 Q_OBJECT
100private:
101 QList<ArrowAttachItem *> childArrows;
102
103 void attachCards(CardItem *startCard, const CardItem *targetCard);
104
105public:
106 explicit ArrowAttachItem(ArrowTarget *_startItem);
107 void addChildArrow(ArrowAttachItem *childArrow);
108
109protected:
110 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
111 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
112};
113
114#endif // ARROWITEM_H
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:276
ArrowAttachItem(ArrowTarget *_startItem)
Definition arrow_item.cpp:266
void addChildArrow(ArrowAttachItem *childArrow)
Definition arrow_item.cpp:271
QList< ArrowAttachItem * > childArrows
Definition arrow_item.h:101
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:342
void attachCards(CardItem *startCard, const CardItem *targetCard)
Definition arrow_item.cpp:317
ArrowDragItem(Player *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase)
Definition arrow_item.cpp:155
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:165
QList< ArrowDragItem * > childArrows
Definition arrow_item.h:86
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:212
void addChildArrow(ArrowDragItem *childArrow)
Definition arrow_item.cpp:160
int deleteInPhase
Definition arrow_item.h:85
ArrowItem(Player *_player, int _id, ArrowTarget *_startItem, ArrowTarget *_targetItem, const QColor &color)
Definition arrow_item.cpp:22
ArrowTarget * getStartItem() const
Definition arrow_item.h:66
void setTargetLocked(bool _targetLocked)
Definition arrow_item.h:74
QMenu * menu
Definition arrow_item.h:24
Player * getPlayer() const
Definition arrow_item.h:54
QRectF boundingRect() const override
Definition arrow_item.h:39
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:132
ArrowTarget * startItem
Definition arrow_item.h:29
int id
Definition arrow_item.h:28
Player * player
Definition arrow_item.h:27
bool fullColor
Definition arrow_item.h:32
QPainterPath path
Definition arrow_item.h:23
int getId() const
Definition arrow_item.h:50
ArrowTarget * getTargetItem() const
Definition arrow_item.h:70
QColor color
Definition arrow_item.h:31
bool targetLocked
Definition arrow_item.h:30
ArrowTarget * targetItem
Definition arrow_item.h:29
QPainterPath shape() const override
Definition arrow_item.h:43
~ArrowItem() override
Definition arrow_item.cpp:37
void updatePath()
Definition arrow_item.cpp:58
void setStartItem(ArrowTarget *_item)
Definition arrow_item.h:58
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition arrow_item.cpp:121
void setTargetItem(ArrowTarget *_item)
Definition arrow_item.h:62
void delArrow()
Definition arrow_item.cpp:41
Definition arrow_target.h:18
Definition card_item.h:29
Definition player.h:65