From e68305d7bfcc8e7eb7e2b484863d114313f4b9b3 Mon Sep 17 00:00:00 2001 From: Rob Blanckaert Date: Sat, 23 Feb 2019 16:52:38 -0800 Subject: [PATCH] - CardItems have dummy CardInfos if they arent in the database (#3589) - If a CardInfo has no sets, add a dummy one to try to download it by non-set specific templates. --- cockatrice/src/abstractcarditem.cpp | 10 ++++++++-- cockatrice/src/pictureloader.cpp | 3 +++ cockatrice/src/player.cpp | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cockatrice/src/abstractcarditem.cpp b/cockatrice/src/abstractcarditem.cpp index b16304ca..3601cfc7 100644 --- a/cockatrice/src/abstractcarditem.cpp +++ b/cockatrice/src/abstractcarditem.cpp @@ -45,8 +45,14 @@ void AbstractCardItem::pixmapUpdated() void AbstractCardItem::cardInfoUpdated() { info = db->getCard(name); - if (info) - connect(info.data(), SIGNAL(pixmapUpdated()), this, SLOT(pixmapUpdated())); + + if (!info) { + QVariantHash properties = QVariantHash(); + + info = CardInfo::newInstance(name, "", true, QVariantHash(), QList(), QList(), + CardInfoPerSetMap(), false, -1, false); + } + connect(info.data(), SIGNAL(pixmapUpdated()), this, SLOT(pixmapUpdated())); cacheBgColor(); update(); diff --git a/cockatrice/src/pictureloader.cpp b/cockatrice/src/pictureloader.cpp index cecca1de..480dce5b 100644 --- a/cockatrice/src/pictureloader.cpp +++ b/cockatrice/src/pictureloader.cpp @@ -33,6 +33,9 @@ PictureToLoad::PictureToLoad(CardInfoPtr _card) : card(std::move(_card)) for (const auto &set : card->getSets()) { sortedSets << set.getPtr(); } + if (sortedSets.empty()) { + sortedSets << CardSet::newInstance("", "", "", QDate()); + } qSort(sortedSets.begin(), sortedSets.end(), SetDownloadPriorityComparator()); // The first time called, nextSet will also populate the Urls for the first set. nextSet(); diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 69115706..f6e7509e 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -1514,7 +1514,7 @@ void Player::eventCreateToken(const Event_CreateToken &event) if (!QString::fromStdString(event.pt()).isEmpty()) { card->setPT(QString::fromStdString(event.pt())); } else { - CardInfoPtr dbCard = db->getCard(QString::fromStdString(event.card_name())); + CardInfoPtr dbCard = card->getInfo(); if (dbCard) { card->setPT(dbCard->getPowTough()); }