From e3cf54068956c055213f9ad0a19800df4df45ecb Mon Sep 17 00:00:00 2001 From: Zach Halpern Date: Mon, 25 Nov 2024 21:09:57 -0500 Subject: [PATCH] Fix UST cards --- oracle/src/oracleimporter.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 8a90fe672..028c4fbc7 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -3,7 +3,7 @@ #include "game/cards/card_database_parser/cockatrice_xml_4.h" #include "qt-json/json.h" -#include +#include #include #include @@ -42,7 +42,7 @@ bool OracleImporter::readSetsFromByteArray(const QByteArray &data) return false; } - QListIterator it(setsMap.values()); + QListIterator it(setsMap.values()); QVariantMap map; QString shortName; @@ -211,13 +211,12 @@ int OracleImporter::importCardsFromSet(const CardSetPtr ¤tSet, const QList QMap> splitCards; QString ptSeparator("/"); QVariantMap card; - QString layout, name, text, colors, colorIdentity, maintype, faceName; - static const bool isToken = false; + QString layout, name, text, colors, colorIdentity, faceName; + static constexpr bool isToken = false; + static const QList setsWithCardsWithSameNameButDifferentText = {"UST"}; QVariantHash properties; CardInfoPerSet setInfo; QList relatedCards; - static const QList specialNumChars = {"★", "s", "†"}; - QMap specialPromoCards; QList allNameProps; for (const QVariant &cardVar : cardsList) { @@ -244,7 +243,7 @@ int OracleImporter::importCardsFromSet(const CardSetPtr ¤tSet, const QList // card properties properties.clear(); - QMapIterator it(cardProperties); + QMapIterator it(cardProperties); while (it.hasNext()) { it.next(); QString mtgjsonProperty = it.key(); @@ -256,7 +255,7 @@ int OracleImporter::importCardsFromSet(const CardSetPtr ¤tSet, const QList // per-set properties setInfo = CardInfoPerSet(currentSet); - QMapIterator it2(setInfoProperties); + QMapIterator it2(setInfoProperties); while (it2.hasNext()) { it2.next(); QString mtgjsonProperty = it2.key(); @@ -267,7 +266,7 @@ int OracleImporter::importCardsFromSet(const CardSetPtr ¤tSet, const QList } // Identifiers - QMapIterator it3(identifierProperties); + QMapIterator it3(identifierProperties); while (it3.hasNext()) { it3.next(); auto mtgjsonProperty = it3.key(); @@ -278,7 +277,16 @@ int OracleImporter::importCardsFromSet(const CardSetPtr ¤tSet, const QList } } - QString numComponent{}; + QString numComponent; + const QString numProperty = setInfo.getProperty("num"); + const QChar lastChar = numProperty.at(numProperty.size() - 1); + + // Un-Sets do some wonky stuff. Split up these cards as individual entries. + if (setsWithCardsWithSameNameButDifferentText.contains(currentSet->getShortName()) && + allNameProps.contains(faceName) && layout == "normal" && lastChar.isLetter()) { + numComponent = " (" + QString(lastChar).toLower() + ")"; + } + allNameProps.append(faceName); // special handling properties colors = card.value("colors").toStringList().join("");