From 975912de9026656bd229afbf99c6d60790da1313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sat, 8 Nov 2025 12:24:24 +0100 Subject: [PATCH] Make parser use CardSettingsInterface Took 13 minutes --- .../interface/settings_card_preference_provider.h | 5 +++++ .../card/database/parser/cockatrice_xml_4.cpp | 8 ++++++-- .../libcockatrice/card/database/parser/cockatrice_xml_4.h | 5 ++++- .../interfaces/interface_card_preference_provider.h | 1 + .../interfaces/noop_card_preference_provider.h | 5 +++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/cockatrice/src/database/interface/settings_card_preference_provider.h b/cockatrice/src/database/interface/settings_card_preference_provider.h index 2901c4206..4197bb53c 100644 --- a/cockatrice/src/database/interface/settings_card_preference_provider.h +++ b/cockatrice/src/database/interface/settings_card_preference_provider.h @@ -11,6 +11,11 @@ public: { return SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardName); } + + bool getIncludeRebalancedCards() const override + { + return SettingsCache::instance().getIncludeRebalancedCards(); + }; }; #endif // COCKATRICE_SETTINGS_CARD_PREFERENCE_PROVIDER_H diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp index ded645a4c..92525d6e1 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.cpp @@ -13,6 +13,11 @@ #define COCKATRICE_XML4_SCHEMALOCATION \ "https://raw.githubusercontent.com/Cockatrice/Cockatrice/master/doc/carddatabase_v4/cards.xsd" +CockatriceXml4Parser::CockatriceXml4Parser(ICardPreferenceProvider *_cardPreferenceProvider) + : cardPreferenceProvider(_cardPreferenceProvider) +{ +} + bool CockatriceXml4Parser::getCanParseFile(const QString &fileName, QIODevice &device) { qCInfo(CockatriceXml4Log) << "Trying to parse: " << fileName; @@ -131,8 +136,7 @@ QVariantHash CockatriceXml4Parser::loadCardPropertiesFromXml(QXmlStreamReader &x void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml) { - bool includeRebalancedCards = - true; // TODO: MOVE THIS OUT OF THE PARSER SettingsCache::instance().getIncludeRebalancedCards(); + bool includeRebalancedCards = cardPreferenceProvider->getIncludeRebalancedCards(); while (!xml.atEnd()) { if (xml.readNext() == QXmlStreamReader::EndElement) { break; diff --git a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h index f438f94b2..40badbf49 100644 --- a/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h +++ b/libcockatrice_card/libcockatrice/card/database/parser/cockatrice_xml_4.h @@ -11,6 +11,7 @@ #include #include +#include inline Q_LOGGING_CATEGORY(CockatriceXml4Log, "cockatrice_xml.xml_4_parser"); @@ -18,7 +19,7 @@ class CockatriceXml4Parser : public ICardDatabaseParser { Q_OBJECT public: - CockatriceXml4Parser() = default; + CockatriceXml4Parser(ICardPreferenceProvider *cardPreferenceProvider); ~CockatriceXml4Parser() override = default; bool getCanParseFile(const QString &name, QIODevice &device) override; void parseFile(QIODevice &device) override; @@ -29,6 +30,8 @@ public: const QString &sourceVersion = "unknown") override; private: + ICardPreferenceProvider *cardPreferenceProvider; + QVariantHash loadCardPropertiesFromXml(QXmlStreamReader &xml); void loadCardsFromXml(QXmlStreamReader &xml); void loadSetsFromXml(QXmlStreamReader &xml); diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h b/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h index ea599f5e8..7c0944f29 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/interface_card_preference_provider.h @@ -8,6 +8,7 @@ class ICardPreferenceProvider public: virtual ~ICardPreferenceProvider() = default; virtual QString getCardPreferenceOverride(const QString &cardName) const = 0; + virtual bool getIncludeRebalancedCards() const = 0; }; #endif // COCKATRICE_INTERFACE_CARD_PREFERENCE_PROVIDER_H diff --git a/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h b/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h index 6e4bf7d73..9fc7e5bb4 100644 --- a/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h +++ b/libcockatrice_interfaces/libcockatrice/interfaces/noop_card_preference_provider.h @@ -9,6 +9,11 @@ public: { return {}; } + + bool getIncludeRebalancedCards() const override + { + return true; + } }; #endif // COCKATRICE_NOOP_CARD_PREFERENCE_PROVIDER_H