Have various game events respect the new UUID attribute on instantiation.

This commit is contained in:
Lukas Brübach 2024-11-07 08:47:04 +01:00
parent 90c4b223dd
commit c9690d790c
12 changed files with 58 additions and 26 deletions

View file

@ -1,7 +1,6 @@
#include "abstract_card_item.h"
#include "../../client/ui/picture_loader.h"
#include "../../main.h"
#include "../../settings/cache_settings.h"
#include "../game_scene.h"
#include "card_database.h"
@ -13,7 +12,11 @@
#include <QPainter>
#include <algorithm>
AbstractCardItem::AbstractCardItem(const QString &_name, const QString &_uuid, Player *_owner, int _id, QGraphicsItem *parent)
AbstractCardItem::AbstractCardItem(const QString &_name,
const QString &_uuid,
Player *_owner,
int _id,
QGraphicsItem *parent)
: ArrowTarget(_owner, parent), id(_id), name(_name), uuid(_uuid), tapped(false), facedown(false), tapAngle(0),
bgColor(Qt::transparent), isHovered(false), realZValue(0)
{
@ -50,7 +53,7 @@ void AbstractCardItem::pixmapUpdated()
void AbstractCardItem::cardInfoUpdated()
{
info = CardDatabaseManager::getInstance()->getCard(name);
info = CardDatabaseManager::getInstance()->getCardByNameAndUUID(name, uuid);
if (!info && !name.isEmpty()) {
QVariantHash properties = QVariantHash();

View file

@ -24,8 +24,8 @@ CardItem::CardItem(Player *_owner,
bool _revealedCard,
QGraphicsItem *parent,
CardZone *_zone)
: AbstractCardItem(_name, _uuid, _owner, _cardid, parent), zone(_zone), revealedCard(_revealedCard), attacking(false),
destroyOnZoneChange(false), doesntUntap(false), dragItem(nullptr), attachedTo(nullptr)
: AbstractCardItem(_name, _uuid, _owner, _cardid, parent), zone(_zone), revealedCard(_revealedCard),
attacking(false), destroyOnZoneChange(false), doesntUntap(false), dragItem(nullptr), attachedTo(nullptr)
{
owner->addCard(this);
@ -243,6 +243,7 @@ void CardItem::processCardInfo(const ServerInfo_Card &_info)
}
setId(_info.id());
setUUID(QString::fromStdString(_info.uuid()));
setName(QString::fromStdString(_info.name()));
setAttacking(_info.attacking());
setFaceDown(_info.face_down());

View file

@ -2031,7 +2031,7 @@ void Player::eventCreateToken(const Event_CreateToken &event)
return;
}
CardItem *card = new CardItem(this, QString::fromStdString(event.card_name()), event.card_id());
CardItem *card = new CardItem(this, QString::fromStdString(event.card_name()), QString(), event.card_id());
// use db PT if not provided in event
if (!QString::fromStdString(event.pt()).isEmpty()) {
card->setPT(QString::fromStdString(event.pt()));
@ -2326,6 +2326,7 @@ void Player::eventDrawCards(const Event_DrawCards &event)
for (int i = 0; i < listSize; ++i) {
const ServerInfo_Card &cardInfo = event.cards(i);
CardItem *card = _deck->takeCard(0, cardInfo.id());
card->setUUID(QString::fromStdString(cardInfo.uuid()));
card->setName(QString::fromStdString(cardInfo.name()));
_hand->addCard(card, false, -1);
}

View file

@ -126,7 +126,7 @@ void CardZone::addCard(CardItem *card, bool reorganize, int x, int y)
{
for (auto *view : views) {
if ((x <= view->getCards().size()) || (view->getNumberCards() == -1)) {
view->addCard(new CardItem(player, card->getName(), card->getId()), reorganize, x, y);
view->addCard(new CardItem(player, card->getName(), card->getUUID(), card->getId()), reorganize, x, y);
}
}

View file

@ -56,9 +56,9 @@ void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardLis
{
if (!cardList.isEmpty()) {
for (int i = 0; i < cardList.size(); ++i)
addCard(
new CardItem(player, QString::fromStdString(cardList[i]->name()), cardList[i]->id(), revealZone, this),
false, i);
addCard(new CardItem(player, QString::fromStdString(cardList[i]->name()),
QString::fromStdString(cardList[i]->uuid()), cardList[i]->id(), revealZone, this),
false, i);
reorganizeCards();
} else if (!origZone->contentsKnown()) {
Command_DumpZone cmd;
@ -75,7 +75,7 @@ void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardLis
int number = numberCards == -1 ? c.size() : (numberCards < c.size() ? numberCards : c.size());
for (int i = 0; i < number; i++) {
CardItem *card = c.at(i);
addCard(new CardItem(player, card->getName(), card->getId(), revealZone, this), false, i);
addCard(new CardItem(player, card->getName(), card->getUUID(), card->getId(), revealZone, this), false, i);
}
reorganizeCards();
}
@ -88,7 +88,8 @@ void ZoneViewZone::zoneDumpReceived(const Response &r)
for (int i = 0; i < respCardListSize; ++i) {
const ServerInfo_Card &cardInfo = resp.zone_info().card_list(i);
auto cardName = QString::fromStdString(cardInfo.name());
auto *card = new CardItem(player, cardName, cardInfo.id(), revealZone, this, this);
auto cardUuid = QString::fromStdString(cardInfo.uuid());
auto *card = new CardItem(player, cardName, cardUuid, cardInfo.id(), revealZone, this, this);
cards.insert(i, card);
}
reorganizeCards();