mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-13 14:02:15 -07:00
implement client side with static 4 phases
This commit is contained in:
parent
9090bde6fd
commit
e2a70bce09
3 changed files with 16 additions and 7 deletions
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue