[Game] Restore attach bookkeeping via CardItem and repaint on state change

This commit is contained in:
Lukas Brübach 2026-10-11 14:57:43 +02:00 • committed by GitHub
parent f321132cce
commit 50a5884606
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 3 deletions

View file

@ -33,6 +33,11 @@
#include <qalgorithms.h>
#include <string>
static CardItem *toCardItem(CardState *card)
{
return card == nullptr ? nullptr : qobject_cast<CardItem *>(card->parent());
}
PlayerLogic::PlayerLogic(const ServerInfo_User &info, int _id, bool _local, bool _judge, AbstractGame *_parent)
: QObject(_parent), game(_parent), playerInfo(new PlayerInfo(info, _id, _local, _judge)),
playerEventHandler(new PlayerEventHandler(this)), playerActions(new PlayerActions(this)), active(false),
@ -227,7 +232,13 @@ void PlayerLogic::processCardAttachment(const ServerInfo_Player &info)
continue;
}
startCard->setAttachedTo(targetCard);
// Route through CardItem::setAttachedTo to maintain the attachedCards graph and reparenting;
// CardState::setAttachedTo alone only repoints the pointer.
if (CardItem *startItem = toCardItem(startCard)) {
startItem->setAttachedTo(toCardItem(targetCard));
} else {
startCard->setAttachedTo(targetCard);
}
}
}
}