diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 5994a0f4..e7d09d62 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -201,7 +201,7 @@ QString OracleImporter::getStringPropertyFromMap(QVariantMap card, QString prope return card.contains(propertyName) ? card.value(propertyName).toString() : QString(""); } -int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList &cardsList) +int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList &cardsList, bool skipSpecialNums) { static const QMap cardProperties{ // mtgjson name => xml name @@ -220,11 +220,14 @@ int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList relatedCards; + static const QList specialNumChars = {"★", "s"}; + QMap specialNumCards; + QList allNumProps; for (const QVariant &cardVar : cardsList) { card = cardVar.toMap(); @@ -236,9 +239,9 @@ int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList bool { return a.getIndex() < b.getIndex(); }); text = QString(""); - isToken = false; properties.clear(); relatedCards.clear(); @@ -391,6 +401,18 @@ int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList extraStarCards; + for (auto cardIter = specialNumCards.constBegin(); cardIter != specialNumCards.constEnd(); ++cardIter) { + if (!allNumProps.contains(cardIter.key())) { + extraStarCards.append(cardIter.value()); + } + } + if (!extraStarCards.isEmpty()) { + numCards += importCardsFromSet(currentSet, extraStarCards, false); + } + } return numCards; } diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index fceca7c8..4a46f018 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -111,7 +111,7 @@ public: bool readSetsFromByteArray(const QByteArray &data); int startImport(); bool saveToFile(const QString &fileName); - int importCardsFromSet(CardSetPtr currentSet, const QList &cards); + int importCardsFromSet(CardSetPtr currentSet, const QList &cards, bool skipSpecialNums = true); QList &getSets() { return allSets;