mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-10 00:04:48 -07:00
[Game][Arrows] ArrowItem should not send deletion game commands by itself (#6932)
Took 13 minutes Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
d2164c3f08
commit
98c00c55ed
3 changed files with 13 additions and 6 deletions
|
|
@ -38,11 +38,11 @@ ArrowItem::ArrowItem(PlayerLogic *_player,
|
|||
|
||||
if (startItem) {
|
||||
connect(startItem, &ArrowTarget::scenePositionChanged, this, doUpdate);
|
||||
connect(startItem, &QObject::destroyed, this, &ArrowItem::delArrow);
|
||||
connect(startItem, &QObject::destroyed, this, &ArrowItem::onTargetDestroyed);
|
||||
}
|
||||
if (targetItem) {
|
||||
connect(targetItem, &ArrowTarget::scenePositionChanged, this, doUpdate);
|
||||
connect(targetItem, &QObject::destroyed, this, &ArrowItem::delArrow);
|
||||
connect(targetItem, &QObject::destroyed, this, &ArrowItem::onTargetDestroyed);
|
||||
}
|
||||
|
||||
if (startItem && targetItem) {
|
||||
|
|
@ -50,6 +50,11 @@ ArrowItem::ArrowItem(PlayerLogic *_player,
|
|||
}
|
||||
}
|
||||
|
||||
void ArrowItem::onTargetDestroyed()
|
||||
{
|
||||
emit requestDeletion(id);
|
||||
}
|
||||
|
||||
void ArrowItem::delArrow()
|
||||
{
|
||||
if (targetItem) {
|
||||
|
|
@ -151,9 +156,7 @@ void ArrowItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
|||
|
||||
event->accept();
|
||||
if (event->button() == Qt::RightButton) {
|
||||
Command_DeleteArrow cmd;
|
||||
cmd.set_arrow_id(id);
|
||||
player->getPlayerActions()->sendGameCommand(cmd);
|
||||
emit requestDeletion(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ class ArrowItem : public QObject, public QGraphicsItem
|
|||
{
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(QGraphicsItem)
|
||||
signals:
|
||||
void requestDeletion(int id);
|
||||
|
||||
private:
|
||||
QPainterPath path;
|
||||
|
||||
|
|
@ -37,6 +40,7 @@ protected:
|
|||
|
||||
public:
|
||||
ArrowItem(PlayerLogic *_player, int _id, ArrowTarget *_startItem, ArrowTarget *_targetItem, const QColor &_color);
|
||||
void onTargetDestroyed();
|
||||
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||
[[nodiscard]] QRectF boundingRect() const override
|
||||
|
|
|
|||
|
|
@ -402,7 +402,7 @@ void GameScene::onArrowCreateRequested(const ArrowData &data)
|
|||
auto *arrow = new ArrowItem(startView->getPlayer(), data.id, startCard, targetItem, data.color);
|
||||
addItem(arrow);
|
||||
arrowRegistry.insert(data.id, arrow);
|
||||
connect(arrow, &QObject::destroyed, this, [this, id = data.id]() { arrowRegistry.remove(id); });
|
||||
connect(arrow, &ArrowItem::requestDeletion, this, &GameScene::onArrowDeleteRequested);
|
||||
}
|
||||
|
||||
void GameScene::onArrowDeleted(int arrowId)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue