From 89daa0ec4a0fe449aa482b10adc89f04f0f6f74b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 18 Nov 2024 18:26:45 +0100 Subject: [PATCH] Include cardName in the PixmapCacheKey in order to not break double-faced cards. --- cockatrice/src/client/ui/picture_loader.cpp | 3 ++- cockatrice/src/game/cards/card_database.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cockatrice/src/client/ui/picture_loader.cpp b/cockatrice/src/client/ui/picture_loader.cpp index e30e5fc58..b2a6e66ba 100644 --- a/cockatrice/src/client/ui/picture_loader.cpp +++ b/cockatrice/src/client/ui/picture_loader.cpp @@ -45,7 +45,8 @@ PictureToLoad::PictureToLoad(CardInfoPtr _card) std::sort(sortedSets.begin(), sortedSets.end(), SetDownloadPriorityComparator()); // If the pixmapCacheKey corresponds to a specific set, we have to try to load it first. for (const auto &set : card->getSets()) { - if (QLatin1String("card_") + QString(set.getProperty("uuid")) == card->getPixmapCacheKey()) { + if (QLatin1String("card_") + card->getName() + QString("_") + QString(set.getProperty("uuid")) == + card->getPixmapCacheKey()) { long long setIndex = sortedSets.indexOf(set.getPtr()); CardSetPtr setForCardUUID = sortedSets.takeAt(setIndex); sortedSets.prepend(setForCardUUID); diff --git a/cockatrice/src/game/cards/card_database.cpp b/cockatrice/src/game/cards/card_database.cpp index d42ab1363..4d293aa2b 100644 --- a/cockatrice/src/game/cards/card_database.cpp +++ b/cockatrice/src/game/cards/card_database.cpp @@ -451,7 +451,8 @@ CardInfoPtr CardDatabase::getCardByNameAndUUID(const QString &cardName, const QS for (const auto &set : info->getSets()) { if (set.getProperty("uuid") == uuid) { CardInfoPtr cardFromSpecificSet = info->clone(); - cardFromSpecificSet->setPixmapCacheKey(QLatin1String("card_") + QString(set.getProperty("uuid"))); + cardFromSpecificSet->setPixmapCacheKey(QLatin1String("card_") + QString(info->getName()) + QString("_") + + QString(set.getProperty("uuid"))); return cardFromSpecificSet; } } @@ -600,7 +601,8 @@ LoadStatus CardDatabase::loadCardDatabases() void CardDatabase::refreshPreferredPrintings() { for (const CardInfoPtr &card : cards) { - card->setPixmapCacheKey(QLatin1String("card_") + QString(getPreferredPrintingUUIDForCard(card->getName()))); + card->setPixmapCacheKey(QLatin1String("card_") + QString(card->getName()) + QString("_") + + QString(getPreferredPrintingUUIDForCard(card->getName()))); } } @@ -673,7 +675,7 @@ QString CardDatabase::getPreferredPrintingUUIDForCard(const QString &cardName) bool CardDatabase::isUuidForPreferredPrinting(const QString &cardName, const QString &uuid) { if (uuid.startsWith("card_")) { - return uuid == QLatin1String("card_") + getPreferredPrintingUUIDForCard(cardName); + return uuid == QLatin1String("card_") + cardName + QString("_") + getPreferredPrintingUUIDForCard(cardName); } return uuid == getPreferredPrintingUUIDForCard(cardName); }