diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 58868b14..5ee1a7ec 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "qt-json/json.h" @@ -299,6 +300,10 @@ int OracleImporter::importTextSpoiler(CardSetPtr set, const QVariant &data) } colors.removeDuplicates(); + if (colors.length() > 1) { + sortColors(colors); + } + // Fortunately, there are no split cards that flip, transform or meld. relatedCards = QList(); reverseRelatedCards = QList(); @@ -318,6 +323,14 @@ int OracleImporter::importTextSpoiler(CardSetPtr set, const QVariant &data) return cards; } +void OracleImporter::sortColors(QStringList &colors) +{ + const QHash colorOrder{{"W", 0}, {"U", 1}, {"B", 2}, {"R", 3}, {"G", 4}}; + std::sort(colors.begin(), colors.end(), [&colorOrder](const QString a, const QString b) { + return colorOrder.value(a, INT_MAX) < colorOrder.value(b, INT_MAX); + }); +} + int OracleImporter::startImport() { clear(); diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index 8611bc0e..84f7b4c2 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -93,6 +93,7 @@ public: protected: void extractColors(const QStringList &in, QStringList &out); + void sortColors(QStringList &colors); }; #endif