Cockatrice 2026-06-27-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
arrow_item.h
Go to the documentation of this file.
1#ifndef ARROWITEM_H
2#define ARROWITEM_H
3
5#include "arrow_target.h"
6
7#include <QGraphicsItem>
8#include <QPointer>
9#include <QSharedPointer>
10
11class CardItem;
12class QGraphicsSceneMouseEvent;
13class PlayerLogic;
14
15class ArrowItem : public QObject, public QGraphicsItem
16{
17 Q_OBJECT
18 Q_INTERFACES(QGraphicsItem)
19signals:
20 void requestDeletion(int creatorId, int id);
21
22private:
23 QPainterPath path;
24
25protected:
26 QSharedPointer<const ArrowData> data;
27 QPointer<ArrowTarget> startItem;
28 QPointer<ArrowTarget> targetItem;
29 bool targetLocked = false;
30 bool fullColor = true;
31
32 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
33
34public:
35 ArrowItem(QSharedPointer<const ArrowData> _data, ArrowTarget *_startItem, ArrowTarget *_targetItem);
36
37 void onTargetDestroyed();
38 void delArrow();
39 void updatePath();
40 void updatePath(const QPointF &endPoint);
41
42 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
43 [[nodiscard]] QRectF boundingRect() const override
44 {
45 return path.boundingRect();
46 }
47 [[nodiscard]] QPainterPath shape() const override
48 {
49 return path;
50 }
51 [[nodiscard]] int getId() const
52 {
53 return data->id;
54 }
55 [[nodiscard]] int getCreatorId() const
56 {
57 return data->creatorId;
58 }
59 [[nodiscard]] ArrowTarget *getStartItem() const
60 {
61 return startItem;
62 }
63 [[nodiscard]] ArrowTarget *getTargetItem() const
64 {
65 return targetItem;
66 }
67 void setTargetLocked(bool _targetLocked)
68 {
69 targetLocked = _targetLocked;
70 }
71};
72
74{
75 Q_OBJECT
76private:
79 QList<ArrowDragItem *> childArrows;
80 QMetaObject::Connection positionConnection;
81
82public:
83 ArrowDragItem(PlayerLogic *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase);
84 void addChildArrow(ArrowDragItem *child);
85
86protected:
87 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
88 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
89};
90
92{
93 Q_OBJECT
94private:
96 QList<ArrowAttachItem *> childArrows;
97 QMetaObject::Connection positionConnection;
98 void attachCards(CardItem *startCard, const CardItem *targetCard);
99
100public:
101 explicit ArrowAttachItem(ArrowTarget *_startItem);
102 void addChildArrow(ArrowAttachItem *child);
103
104protected:
105 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
106 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
107};
108
109#endif
QMetaObject::Connection positionConnection
Definition arrow_item.h:97
PlayerLogic * player
Definition arrow_item.h:95
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:305
ArrowAttachItem(ArrowTarget *_startItem)
Definition arrow_item.cpp:288
void addChildArrow(ArrowAttachItem *child)
Definition arrow_item.cpp:300
QList< ArrowAttachItem * > childArrows
Definition arrow_item.h:96
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:348
void attachCards(CardItem *startCard, const CardItem *targetCard)
Definition arrow_item.cpp:374
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:177
QList< ArrowDragItem * > childArrows
Definition arrow_item.h:79
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:225
QMetaObject::Connection positionConnection
Definition arrow_item.h:80
void addChildArrow(ArrowDragItem *child)
Definition arrow_item.cpp:172
PlayerLogic * player
Definition arrow_item.h:77
int deleteInPhase
Definition arrow_item.h:78
ArrowDragItem(PlayerLogic *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase)
Definition arrow_item.cpp:161
ArrowTarget * getStartItem() const
Definition arrow_item.h:59
void setTargetLocked(bool _targetLocked)
Definition arrow_item.h:67
void onTargetDestroyed()
Definition arrow_item.cpp:49
QRectF boundingRect() const override
Definition arrow_item.h:43
int getCreatorId() const
Definition arrow_item.h:55
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:139
bool fullColor
Definition arrow_item.h:30
QPainterPath path
Definition arrow_item.h:23
QPointer< ArrowTarget > startItem
Definition arrow_item.h:27
int getId() const
Definition arrow_item.h:51
ArrowItem(QSharedPointer< const ArrowData > _data, ArrowTarget *_startItem, ArrowTarget *_targetItem)
Definition arrow_item.cpp:24
ArrowTarget * getTargetItem() const
Definition arrow_item.h:63
QSharedPointer< const ArrowData > data
Definition arrow_item.h:26
bool targetLocked
Definition arrow_item.h:29
QPainterPath shape() const override
Definition arrow_item.h:47
void updatePath()
Definition arrow_item.cpp:62
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition arrow_item.cpp:127
QPointer< ArrowTarget > targetItem
Definition arrow_item.h:28
void delArrow()
Definition arrow_item.cpp:54
void requestDeletion(int creatorId, int id)
Definition arrow_target.h:18
Definition card_item.h:28
Definition player_logic.h:64