mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-23 10:52:16 -07:00
do nothing if target is already attached
This commit is contained in:
parent
4f7326f637
commit
3eea394236
2 changed files with 31 additions and 19 deletions
|
|
@ -307,31 +307,41 @@ void ArrowAttachItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ArrowAttachItem::attachCards(CardItem *startCard, const CardItem *targetCard)
|
||||||
|
{
|
||||||
|
// do nothing if target is already attached to another card
|
||||||
|
if (targetCard->getAttachedTo()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CardZone *startZone = startCard->getZone();
|
||||||
|
CardZone *targetZone = targetCard->getZone();
|
||||||
|
|
||||||
|
// move card onto table first if attaching from some other zone
|
||||||
|
if (startZone->getName() != "table") {
|
||||||
|
auto info = startCard->getInfo();
|
||||||
|
player->playCardToTable(startCard, false, info ? info->getCipt() : false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Command_AttachCard cmd;
|
||||||
|
cmd.set_start_zone("table");
|
||||||
|
cmd.set_card_id(startCard->getId());
|
||||||
|
cmd.set_target_player_id(targetZone->getPlayer()->getId());
|
||||||
|
cmd.set_target_zone(targetZone->getName().toStdString());
|
||||||
|
cmd.set_target_card_id(targetCard->getId());
|
||||||
|
|
||||||
|
player->sendGameCommand(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
void ArrowAttachItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
void ArrowAttachItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||||||
{
|
{
|
||||||
if (!startItem)
|
if (!startItem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (targetItem && (targetItem != startItem)) {
|
if (targetItem && (targetItem != startItem)) {
|
||||||
CardItem *startCard = qgraphicsitem_cast<CardItem *>(startItem);
|
auto startCard = qgraphicsitem_cast<CardItem *>(startItem);
|
||||||
CardZone *startZone = startCard->getZone();
|
auto targetCard = qgraphicsitem_cast<CardItem *>(targetItem);
|
||||||
CardItem *targetCard = qgraphicsitem_cast<CardItem *>(targetItem);
|
attachCards(startCard, targetCard);
|
||||||
CardZone *targetZone = targetCard->getZone();
|
|
||||||
|
|
||||||
// move card onto table first if attaching from some other zone
|
|
||||||
if (startZone->getName() != "table") {
|
|
||||||
auto info = startCard->getInfo();
|
|
||||||
player->playCardToTable(startCard, false, info ? info->getCipt() : false);
|
|
||||||
}
|
|
||||||
|
|
||||||
Command_AttachCard cmd;
|
|
||||||
cmd.set_start_zone("table");
|
|
||||||
cmd.set_card_id(startCard->getId());
|
|
||||||
cmd.set_target_player_id(targetZone->getPlayer()->getId());
|
|
||||||
cmd.set_target_zone(targetZone->getName().toStdString());
|
|
||||||
cmd.set_target_card_id(targetCard->getId());
|
|
||||||
|
|
||||||
player->sendGameCommand(cmd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delArrow();
|
delArrow();
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,8 @@ class ArrowAttachItem : public ArrowItem
|
||||||
private:
|
private:
|
||||||
QList<ArrowAttachItem *> childArrows;
|
QList<ArrowAttachItem *> childArrows;
|
||||||
|
|
||||||
|
void attachCards(CardItem *startCard, const CardItem *targetCard);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ArrowAttachItem(ArrowTarget *_startItem);
|
ArrowAttachItem(ArrowTarget *_startItem);
|
||||||
void addChildArrow(ArrowAttachItem *childArrow);
|
void addChildArrow(ArrowAttachItem *childArrow);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue