Cockatrice 2026-06-01-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
6
7#ifndef ARROWITEM_H
8#define ARROWITEM_H
9
10#include "arrow_target.h"
11
12#include <QGraphicsItem>
13#include <QPointer>
14
15class CardItem;
16class QGraphicsSceneMouseEvent;
17class QMenu;
18class PlayerLogic;
19
20class ArrowItem : public QObject, public QGraphicsItem
21{
22 Q_OBJECT
23 Q_INTERFACES(QGraphicsItem)
24signals:
25 void requestDeletion(int id);
26
27private:
28 QPainterPath path;
29
30protected:
32 int id;
33 QPointer<ArrowTarget> startItem;
34 QPointer<ArrowTarget> targetItem;
35 bool targetLocked = false;
36 QColor color;
37 bool fullColor = true;
38
39 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
40
41public:
42 ArrowItem(PlayerLogic *_player, int _id, ArrowTarget *_startItem, ArrowTarget *_targetItem, const QColor &_color);
43 void onTargetDestroyed();
44
45 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
46 [[nodiscard]] QRectF boundingRect() const override
47 {
48 return path.boundingRect();
49 }
50 [[nodiscard]] QPainterPath shape() const override
51 {
52 return path;
53 }
54
55 void updatePath();
56 void updatePath(const QPointF &endPoint);
57
58 [[nodiscard]] int getId() const
59 {
60 return id;
61 }
62 [[nodiscard]] PlayerLogic *getPlayer() const
63 {
64 return player;
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
79 void delArrow();
80};
81
83{
84 Q_OBJECT
85private:
87 QList<ArrowDragItem *> childArrows;
88 QMetaObject::Connection positionConnection;
89
90public:
91 ArrowDragItem(PlayerLogic *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase);
92 void addChildArrow(ArrowDragItem *child);
93
94protected:
95 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
96 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
97};
98
100{
101 Q_OBJECT
102private:
103 QList<ArrowAttachItem *> childArrows;
104 QMetaObject::Connection positionConnection;
105 void attachCards(CardItem *startCard, const CardItem *targetCard);
106
107public:
108 explicit ArrowAttachItem(ArrowTarget *_startItem);
109 void addChildArrow(ArrowAttachItem *child);
110
111protected:
112 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
113 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
114};
115
116#endif // ARROWITEM_H
QMetaObject::Connection positionConnection
Definition arrow_item.h:104
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:296
ArrowAttachItem(ArrowTarget *_startItem)
Definition arrow_item.cpp:286
void addChildArrow(ArrowAttachItem *child)
Definition arrow_item.cpp:291
QList< ArrowAttachItem * > childArrows
Definition arrow_item.h:103
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:339
void attachCards(CardItem *startCard, const CardItem *targetCard)
Definition arrow_item.cpp:365
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:175
QList< ArrowDragItem * > childArrows
Definition arrow_item.h:87
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:223
QMetaObject::Connection positionConnection
Definition arrow_item.h:88
void addChildArrow(ArrowDragItem *child)
Definition arrow_item.cpp:170
int deleteInPhase
Definition arrow_item.h:86
ArrowDragItem(PlayerLogic *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase)
Definition arrow_item.cpp:165
ArrowTarget * getStartItem() const
Definition arrow_item.h:66
void setTargetLocked(bool _targetLocked)
Definition arrow_item.h:74
PlayerLogic * getPlayer() const
Definition arrow_item.h:62
void onTargetDestroyed()
Definition arrow_item.cpp:53
QRectF boundingRect() const override
Definition arrow_item.h:46
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition arrow_item.cpp:143
int id
Definition arrow_item.h:32
bool fullColor
Definition arrow_item.h:37
PlayerLogic * player
Definition arrow_item.h:31
QPainterPath path
Definition arrow_item.h:28
QPointer< ArrowTarget > startItem
Definition arrow_item.h:33
int getId() const
Definition arrow_item.h:58
ArrowTarget * getTargetItem() const
Definition arrow_item.h:70
QColor color
Definition arrow_item.h:36
bool targetLocked
Definition arrow_item.h:35
ArrowItem(PlayerLogic *_player, int _id, ArrowTarget *_startItem, ArrowTarget *_targetItem, const QColor &_color)
Definition arrow_item.cpp:24
QPainterPath shape() const override
Definition arrow_item.h:50
void updatePath()
Definition arrow_item.cpp:66
void requestDeletion(int id)
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition arrow_item.cpp:131
QPointer< ArrowTarget > targetItem
Definition arrow_item.h:34
void delArrow()
Definition arrow_item.cpp:58
Definition arrow_target.h:18
Definition card_item.h:28
Definition player_logic.h:65