From 69704874b67c3cae63ee7d27634bbffa4cc4f6e2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 30 Jul 2015 20:37:30 +0300 Subject: Add support for include tag in badges.xml. Also add patches and parts support for badges.xml --- src/defaults.cpp | 2 ++ src/resources/db/badgesdb.cpp | 24 ++++++++++++++++++++++-- src/utils/xmlutils.cpp | 1 - 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/defaults.cpp b/src/defaults.cpp index 2d1a4f77b..bbb0f467e 100644 --- a/src/defaults.cpp +++ b/src/defaults.cpp @@ -596,6 +596,8 @@ DefaultsData* getPathsDefaults() AddDEF("defaultCommandsFile", "defaultcommands.xml"); AddDEF("defaultcommandsPatchFile", "defaultcommands_patch.xml"); AddDEF("defaultcommandsPatchDir", "defaultcommands.d"); + AddDEF("badgesFile", "badges.xml"); + AddDEF("badgesPatchFile", "badges_patch.xml"); AddDEF("poisonEffectName", "poison"); AddDEF("cartEffectName", "cart"); AddDEF("ridingEffectName", "riding"); diff --git a/src/resources/db/badgesdb.cpp b/src/resources/db/badgesdb.cpp index d7476c7f0..9efd57d82 100644 --- a/src/resources/db/badgesdb.cpp +++ b/src/resources/db/badgesdb.cpp @@ -20,6 +20,10 @@ #include "resources/db/badgesdb.h" +#include "configuration.h" + +#include "resources/beingcommon.h" + #include "utils/xmlutils.h" #include "debug.h" @@ -32,9 +36,11 @@ namespace bool mLoaded = false; } -static void loadDB(const std::string &name, BadgesInfos &arr) +static void loadXmlFile(const std::string &file, + const std::string &name, + BadgesInfos &arr) { - readXmlStringMap("badges.xml", + readXmlStringMap(file, "badges", name, "badge", @@ -43,6 +49,20 @@ static void loadDB(const std::string &name, BadgesInfos &arr) arr); } +static void loadDB(const std::string &name, BadgesInfos &arr) +{ + loadXmlFile(paths.getStringValue("badgesFile"), + name, arr); + loadXmlFile(paths.getStringValue("badgesPatchFile"), + name, arr); + + StringVect listVect; + BeingCommon::getIncludeFiles(paths.getStringValue( + "badgesPatchDir"), listVect, ".xml"); + FOR_EACH (StringVectCIter, itVect, listVect) + loadXmlFile(*itVect, name, arr); +} + void BadgesDB::load() { if (mLoaded) diff --git a/src/utils/xmlutils.cpp b/src/utils/xmlutils.cpp index c437b0175..68ed3adb7 100644 --- a/src/utils/xmlutils.cpp +++ b/src/utils/xmlutils.cpp @@ -79,7 +79,6 @@ void readXmlStringMap(const std::string &fileName, const std::string &attributeValueName, std::map &arr) { - arr.clear(); XML::Document doc(fileName, UseResman_true, SkipError_false); const XmlNodePtrConst rootNode = doc.rootNode(); -- cgit v1.2.3-70-g09d2