summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFedja Beader <fedja@protonmail.ch>2025-02-26 20:12:37 +0000
committerFedja Beader <fedja@protonmail.ch>2025-02-26 20:12:37 +0000
commit190851b99b7ac3548f8db3637ddf5a64ba298051 (patch)
tree0f964ffbc39fa0d015702fd04db312ef16eda2aa
parent1db009d522c8ca5957148362984e77a299f5cd22 (diff)
downloadmanaplus-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.cpp62
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);
}
}