diff options
author | Fedja Beader <fedja@protonmail.ch> | 2025-02-26 20:12:37 +0000 |
---|---|---|
committer | Fedja Beader <fedja@protonmail.ch> | 2025-02-26 20:12:37 +0000 |
commit | 190851b99b7ac3548f8db3637ddf5a64ba298051 (patch) | |
tree | 0f964ffbc39fa0d015702fd04db312ef16eda2aa | |
parent | 1db009d522c8ca5957148362984e77a299f5cd22 (diff) | |
download | manaplus-190851b99b7ac3548f8db3637ddf5a64ba298051.tar.gz manaplus-190851b99b7ac3548f8db3637ddf5a64ba298051.tar.bz2 manaplus-190851b99b7ac3548f8db3637ddf5a64ba298051.tar.xz manaplus-190851b99b7ac3548f8db3637ddf5a64ba298051.zip |
StatDB: deduplicate loadBasicStats(...) and loadStats(...)
****
mana/plus!136
-rw-r--r-- | src/resources/db/statdb.cpp | 62 |
1 files changed, 15 insertions, 47 deletions
diff --git a/src/resources/db/statdb.cpp b/src/resources/db/statdb.cpp index 297f2a6f1..36c26f1e3 100644 --- a/src/resources/db/statdb.cpp +++ b/src/resources/db/statdb.cpp @@ -97,72 +97,40 @@ void StatDb::load() mLoaded = true; } -static void loadBasicStats(XmlNodeConstPtr rootNode) -{ - const int maxAttr = static_cast<int>(Attributes::MAX_ATTRIBUTE); - for_each_xml_child_node(node, rootNode) - { - if (xmlNameEqual(node, "stat")) - { - const std::string name = XML::getProperty(node, "name", ""); - const std::string attr = XML::getProperty(node, "attr", ""); - if (attr.empty() || AttributesEnum::contains(attr) == false) - { - const int id = XML::getProperty(node, "id", 0); - if (id <= 0 || id >= maxAttr) - { - reportAlways("Wrong attr or id for basic " - "stat with name %s", - name.c_str()) - continue; - } - const std::string tag = XML::getProperty(node, "tag", ""); - mBasicStats.push_back(BasicStat(static_cast<AttributesT>(id), - tag, - name)); - } - else - { - const std::string tag = XML::getProperty(node, "tag", ""); - mBasicStats.push_back(BasicStat(AttributesEnum::get(attr), - tag, - name)); - } - } - } -} - static void loadStats(XmlNodeConstPtr rootNode, + const bool isBasic, const std::string &page) { const int maxAttr = static_cast<int>(Attributes::MAX_ATTRIBUTE); - STD_VECTOR<BasicStat> &stats = mStats[page]; - mPages.push_back(page); + STD_VECTOR<BasicStat> &stats = isBasic ? mBasicStats : mStats[page]; + if (!isBasic) + mPages.push_back(page); + for_each_xml_child_node(node, rootNode) { if (xmlNameEqual(node, "stat")) { const std::string name = XML::getProperty(node, "name", ""); const std::string attr = XML::getProperty(node, "attr", ""); + const std::string tag = XML::getProperty(node, "tag", ""); if (attr.empty() || AttributesEnum::contains(attr) == false) { const int id = XML::getProperty(node, "id", 0); if (id <= 0 || id >= maxAttr) { - reportAlways("Wrong attr or id for extended " - "stat with name %s", - name.c_str()) + reportAlways("Wrong attr or id for %s stat with name %s", + (isBasic ? "basic" : "extended"), + name.c_str()) continue; } + stats.push_back(BasicStat(static_cast<AttributesT>(id), - std::string(), - name)); + tag, name)); } else { stats.push_back(BasicStat(AttributesEnum::get(attr), - std::string(), - name)); + tag, name)); } } } @@ -195,12 +163,12 @@ void StatDb::loadXmlFile(const std::string &fileName, } else if (xmlNameEqual(node, "basic")) { - loadBasicStats(node); + loadStats(node, true, ""); } else if (xmlNameEqual(node, "extended")) { // TRANSLATORS: stats page name - loadStats(node, _("Extended")); + loadStats(node, false, _("Extended")); } else if (xmlNameEqual(node, "page")) { @@ -210,7 +178,7 @@ void StatDb::loadXmlFile(const std::string &fileName, reportAlways("Page without name in stats.xml") page = "Unknown"; } - loadStats(node, page); + loadStats(node, false, page); } } |