From 18150942493481c376ec4067b8e731302aee7187 Mon Sep 17 00:00:00 2001 From: ebbit1q Date: Tue, 17 Mar 2020 01:42:27 +0100 Subject: [PATCH] Keep stars but only sometimes, add scheme cards back (#3904) * ignore stars and promos but only sometimes this will correct #3706 and #3715 being a bit overzealous in removing cards and thus fix scheme cards being removed in entirety fix #3845 note that this causes a lot more cards to be added that are in promo sets, if these promo sets should prove to be problematic they should be disabled somehow as having them as an option is still nice. * remove debug lines --- oracle/src/oracleimporter.cpp | 48 +++++++++++++++++++++++++---------- oracle/src/oracleimporter.h | 2 +- 2 files changed, 36 insertions(+), 14 deletions(-) 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;