Make OracleImporter not extend CardDatabase (#5868)

* Move TOKENS_SETNAME to CardSet

* make OracleImporter no longer extend CardDatabase
This commit is contained in:
RickyRister 2025-04-20 18:48:13 -07:00 committed by GitHub
parent 873e0d346e
commit a1499854f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 32 additions and 17 deletions

View file

@ -161,7 +161,7 @@ void DlgEditTokens::actAddToken()
} }
} }
QString setName = CardDatabase::TOKENS_SETNAME; QString setName = CardSet::TOKENS_SETNAME;
CardInfoPerSetMap sets; CardInfoPerSetMap sets;
sets[setName].append(CardInfoPerSet(databaseModel->getDatabase()->getSet(setName))); sets[setName].append(CardInfoPerSet(databaseModel->getDatabase()->getSet(setName)));
CardInfoPtr card = CardInfo::newInstance(name, "", true, QVariantHash(), QList<CardRelation *>(), CardInfoPtr card = CardInfo::newInstance(name, "", true, QVariantHash(), QList<CardRelation *>(),

View file

@ -16,8 +16,6 @@
#include <algorithm> #include <algorithm>
#include <utility> #include <utility>
const char *CardDatabase::TOKENS_SETNAME = "TK";
CardDatabase::CardDatabase(QObject *parent) : QObject(parent), loadStatus(NotLoaded) CardDatabase::CardDatabase(QObject *parent) : QObject(parent), loadStatus(NotLoaded)
{ {
qRegisterMetaType<CardInfoPtr>("CardInfoPtr"); qRegisterMetaType<CardInfoPtr>("CardInfoPtr");
@ -560,16 +558,15 @@ void CardDatabase::notifyEnabledSetsChanged()
bool CardDatabase::saveCustomTokensToFile() bool CardDatabase::saveCustomTokensToFile()
{ {
QString fileName = QString fileName = SettingsCache::instance().getCustomCardDatabasePath() + "/" + CardSet::TOKENS_SETNAME + ".xml";
SettingsCache::instance().getCustomCardDatabasePath() + "/" + CardDatabase::TOKENS_SETNAME + ".xml";
SetNameMap tmpSets; SetNameMap tmpSets;
CardSetPtr customTokensSet = getSet(CardDatabase::TOKENS_SETNAME); CardSetPtr customTokensSet = getSet(CardSet::TOKENS_SETNAME);
tmpSets.insert(CardDatabase::TOKENS_SETNAME, customTokensSet); tmpSets.insert(CardSet::TOKENS_SETNAME, customTokensSet);
CardNameMap tmpCards; CardNameMap tmpCards;
for (const CardInfoPtr &card : cards) { for (const CardInfoPtr &card : cards) {
if (card->getSets().contains(CardDatabase::TOKENS_SETNAME)) { if (card->getSets().contains(CardSet::TOKENS_SETNAME)) {
tmpCards.insert(card->getName(), card); tmpCards.insert(card->getName(), card);
} }
} }

View file

@ -61,8 +61,6 @@ private:
*removeCardMutex = new QBasicMutex(); *removeCardMutex = new QBasicMutex();
public: public:
static const char *TOKENS_SETNAME;
explicit CardDatabase(QObject *parent = nullptr); explicit CardDatabase(QObject *parent = nullptr);
~CardDatabase() override; ~CardDatabase() override;
void clear(); void clear();

View file

@ -387,7 +387,7 @@ TokenEditModel::TokenEditModel(QObject *parent) : CardDatabaseDisplayModel(paren
bool TokenEditModel::filterAcceptsRow(int sourceRow, const QModelIndex & /*sourceParent*/) const bool TokenEditModel::filterAcceptsRow(int sourceRow, const QModelIndex & /*sourceParent*/) const
{ {
CardInfoPtr info = static_cast<CardDatabaseModel *>(sourceModel())->getCard(sourceRow); CardInfoPtr info = static_cast<CardDatabaseModel *>(sourceModel())->getCard(sourceRow);
return info->getIsToken() && info->getSets().contains(CardDatabase::TOKENS_SETNAME) && rowMatchesCardName(info); return info->getIsToken() && info->getSets().contains(CardSet::TOKENS_SETNAME) && rowMatchesCardName(info);
} }
int TokenEditModel::rowCount(const QModelIndex &parent) const int TokenEditModel::rowCount(const QModelIndex &parent) const

View file

@ -11,6 +11,8 @@
#include <algorithm> #include <algorithm>
#include <utility> #include <utility>
const char *CardSet::TOKENS_SETNAME = "TK";
CardSet::CardSet(const QString &_shortName, CardSet::CardSet(const QString &_shortName,
const QString &_longName, const QString &_longName,
const QString &_setType, const QString &_setType,

View file

@ -43,6 +43,8 @@ public:
PriorityLowest = 100, PriorityLowest = 100,
}; };
static const char *TOKENS_SETNAME;
private: private:
QString shortName, longName; QString shortName, longName;
unsigned int sortKey; unsigned int sortKey;

View file

@ -19,7 +19,7 @@ SplitCardPart::SplitCardPart(const QString &_name,
const QRegularExpression OracleImporter::formatRegex = QRegularExpression("^format-"); const QRegularExpression OracleImporter::formatRegex = QRegularExpression("^format-");
OracleImporter::OracleImporter(const QString &_dataDir, QObject *parent) : CardDatabase(parent), dataDir(_dataDir) OracleImporter::OracleImporter(const QString &_dataDir, QObject *parent) : QObject(parent), dataDir(_dataDir)
{ {
} }
@ -463,8 +463,8 @@ int OracleImporter::startImport()
{ {
int setCards = 0, setIndex = 0; int setCards = 0, setIndex = 0;
// add an empty set for tokens // add an empty set for tokens
CardSetPtr tokenSet = CardSet::newInstance(TOKENS_SETNAME, tr("Dummy set containing tokens"), "Tokens"); CardSetPtr tokenSet = CardSet::newInstance(CardSet::TOKENS_SETNAME, tr("Dummy set containing tokens"), "Tokens");
sets.insert(TOKENS_SETNAME, tokenSet); sets.insert(CardSet::TOKENS_SETNAME, tokenSet);
for (const SetToDownload &curSetToParse : allSets) { for (const SetToDownload &curSetToParse : allSets) {
CardSetPtr newSet = CardSetPtr newSet =
@ -494,6 +494,7 @@ bool OracleImporter::saveToFile(const QString &fileName, const QString &sourceUr
void OracleImporter::clear() void OracleImporter::clear()
{ {
CardDatabase::clear(); sets.clear();
cards.clear();
allSets.clear(); allSets.clear();
} }

View file

@ -4,7 +4,7 @@
#include <QMap> #include <QMap>
#include <QRegularExpression> #include <QRegularExpression>
#include <QVariant> #include <QVariant>
#include <game/cards/card_database.h> #include <game/cards/card_info.h>
#include <utility> #include <utility>
// many users prefer not to see these sets with non english arts // many users prefer not to see these sets with non english arts
@ -117,13 +117,24 @@ private:
CardInfoPerSet setInfo; CardInfoPerSet setInfo;
}; };
class OracleImporter : public CardDatabase class OracleImporter : public QObject
{ {
Q_OBJECT Q_OBJECT
private: private:
const QStringList mainCardTypes = {"Planeswalker", "Creature", "Land", "Sorcery", const QStringList mainCardTypes = {"Planeswalker", "Creature", "Land", "Sorcery",
"Instant", "Artifact", "Enchantment"}; "Instant", "Artifact", "Enchantment"};
static const QRegularExpression formatRegex; static const QRegularExpression formatRegex;
/**
* The cards, indexed by name.
*/
CardNameMap cards;
/**
* The sets, indexed by short name.
*/
SetNameMap sets;
QList<SetToDownload> allSets; QList<SetToDownload> allSets;
QVariantMap setsMap; QVariantMap setsMap;
QString dataDir; QString dataDir;
@ -146,6 +157,10 @@ public:
int startImport(); int startImport();
bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion); bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion);
int importCardsFromSet(const CardSetPtr &currentSet, const QList<QVariant> &cards); int importCardsFromSet(const CardSetPtr &currentSet, const QList<QVariant> &cards);
const CardNameMap &getCardList() const
{
return cards;
}
QList<SetToDownload> &getSets() QList<SetToDownload> &getSets()
{ {
return allSets; return allSets;