implement client side with static 4 phases

This commit is contained in:
ebbit1q 2025-09-20 00:29:22 +02:00
parent 9090bde6fd
commit e2a70bce09
3 changed files with 16 additions and 7 deletions

View file

@ -151,8 +151,8 @@ void ArrowItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
} }
} }
ArrowDragItem::ArrowDragItem(Player *_owner, ArrowTarget *_startItem, const QColor &_color) ArrowDragItem::ArrowDragItem(Player *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase)
: ArrowItem(_owner, -1, _startItem, 0, _color) : ArrowItem(_owner, -1, _startItem, 0, _color), deleteInPhase(_deleteInPhase)
{ {
} }
@ -245,6 +245,9 @@ void ArrowDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
else else
cmd.set_start_zone(SettingsCache::instance().getPlayToStack() ? "stack" : "table"); cmd.set_start_zone(SettingsCache::instance().getPlayToStack() ? "stack" : "table");
} }
if (deleteInPhase != 0) {
cmd.set_delete_in_phase(deleteInPhase);
}
player->getPlayerActions()->sendGameCommand(cmd); player->getPlayerActions()->sendGameCommand(cmd);
} }
delArrow(); delArrow();

View file

@ -82,10 +82,11 @@ class ArrowDragItem : public ArrowItem
{ {
Q_OBJECT Q_OBJECT
private: private:
int deleteInPhase;
QList<ArrowDragItem *> childArrows; QList<ArrowDragItem *> childArrows;
public: public:
ArrowDragItem(Player *_owner, ArrowTarget *_startItem, const QColor &_color); ArrowDragItem(Player *_owner, ArrowTarget *_startItem, const QColor &_color, int _deleteInPhase);
void addChildArrow(ArrowDragItem *childArrow); void addChildArrow(ArrowDragItem *childArrow);
protected: protected:

View file

@ -275,9 +275,14 @@ void CardItem::drawArrow(const QColor &arrowColor)
if (owner->getGame()->getPlayerManager()->isSpectator()) if (owner->getGame()->getPlayerManager()->isSpectator())
return; return;
Player *arrowOwner = auto *game = owner->getGame();
owner->getGame()->getPlayerManager()->getActiveLocalPlayer(owner->getGame()->getGameState()->getActivePlayer()); Player *arrowOwner = game->getPlayerManager()->getActiveLocalPlayer(game->getGameState()->getActivePlayer());
ArrowDragItem *arrow = new ArrowDragItem(arrowOwner, this, arrowColor); int phase = 0; // do not set phase
if (SettingsCache::instance().getDoNotDeleteArrowsInSubPhases()) {
int currentPhase = game->getGameState()->getCurrentPhase();
phase = currentPhase + 4;
}
ArrowDragItem *arrow = new ArrowDragItem(arrowOwner, this, arrowColor, phase);
scene()->addItem(arrow); scene()->addItem(arrow);
arrow->grabMouse(); arrow->grabMouse();
@ -288,7 +293,7 @@ void CardItem::drawArrow(const QColor &arrowColor)
if (card->getZone() != zone) if (card->getZone() != zone)
continue; continue;
ArrowDragItem *childArrow = new ArrowDragItem(arrowOwner, card, arrowColor); ArrowDragItem *childArrow = new ArrowDragItem(arrowOwner, card, arrowColor, phase);
scene()->addItem(childArrow); scene()->addItem(childArrow);
arrow->addChildArrow(childArrow); arrow->addChildArrow(childArrow);
} }