diff --git a/cockatrice/src/game/cards/card_database.cpp b/cockatrice/src/game/cards/card_database.cpp index 8d2dc3b4f..f71c8ad77 100644 --- a/cockatrice/src/game/cards/card_database.cpp +++ b/cockatrice/src/game/cards/card_database.cpp @@ -304,6 +304,17 @@ void CardInfo::addToSet(const CardSetPtr &_set, const CardInfoPerSet _info) refreshCachedSetNames(); } +void CardInfo::combineLegalities(const QVariantHash &props) +{ + QHashIterator it(props); + while (it.hasNext()) { + it.next(); + if (it.key().startsWith("format-")) { + smartThis->setProperty(it.key(), it.value().toString()); + } + } +} + void CardInfo::refreshCachedSetNames() { QStringList setList; diff --git a/cockatrice/src/game/cards/card_database.h b/cockatrice/src/game/cards/card_database.h index 1ff50b4bd..0c7f03246 100644 --- a/cockatrice/src/game/cards/card_database.h +++ b/cockatrice/src/game/cards/card_database.h @@ -390,6 +390,7 @@ public: } QString getCorrectedName() const; void addToSet(const CardSetPtr &_set, CardInfoPerSet _info = CardInfoPerSet()); + void combineLegalities(const QVariantHash &props); void emitPixmapUpdated() { emit pixmapUpdated(); diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 26cd652c8..45cd389b5 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -16,6 +16,8 @@ SplitCardPart::SplitCardPart(const QString &_name, { } +const QRegularExpression OracleImporter::formatRegex = QRegularExpression("^format-"); + OracleImporter::OracleImporter(const QString &_dataDir, QObject *parent) : CardDatabase(parent), dataDir(_dataDir) { } @@ -118,6 +120,9 @@ CardInfoPtr OracleImporter::addCard(QString name, if (cards.contains(name)) { CardInfoPtr card = cards.value(name); card->addToSet(setInfo.getPtr(), setInfo); + if (card->getProperties().filter(formatRegex).empty()) { + card->combineLegalities(properties); + } return card; } diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index e4caf9fbb..1231d1a81 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -2,6 +2,7 @@ #define ORACLEIMPORTER_H #include +#include #include #include #include @@ -122,6 +123,7 @@ class OracleImporter : public CardDatabase private: const QStringList mainCardTypes = {"Planeswalker", "Creature", "Land", "Sorcery", "Instant", "Artifact", "Enchantment"}; + static const QRegularExpression formatRegex; QList allSets; QVariantMap setsMap; QString dataDir;