From 45d62b68801798f40bd909660ce29343ad6fdb29 Mon Sep 17 00:00:00 2001 From: ebbit1q Date: Thu, 23 Apr 2020 17:24:39 +0200 Subject: [PATCH] skip all duplicate promos instead of just stars (#3965) --- oracle/src/oracleimporter.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 658d688f..b2e9e0eb 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, bool skipSpecialNums) +int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList &cardsList, bool skipSpecialCards) { static const QMap cardProperties{ // mtgjson name => xml name @@ -226,8 +226,8 @@ int OracleImporter::importCardsFromSet(CardSetPtr currentSet, const QList relatedCards; static const QList specialNumChars = {"★", "s"}; - QMap specialNumCards; - QList allNumProps; + QMap specialPromoCards; + QList allNameProps; for (const QVariant &cardVar : cardsList) { card = cardVar.toMap(); @@ -276,21 +276,26 @@ 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()); + // only add the unique promo cards that didn't already exist in the set + if (skipSpecialCards) { + QList nonDuplicatePromos; + for (auto cardIter = specialPromoCards.constBegin(); cardIter != specialPromoCards.constEnd(); ++cardIter) { + if (!allNameProps.contains(cardIter.key())) { + nonDuplicatePromos.append(cardIter.value()); } } - if (!extraStarCards.isEmpty()) { - numCards += importCardsFromSet(currentSet, extraStarCards, false); + if (!nonDuplicatePromos.isEmpty()) { + numCards += importCardsFromSet(currentSet, nonDuplicatePromos, false); } } return numCards;