diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-01-06 18:08:30 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-01-06 18:08:30 +0300 |
commit | d8f56c2b9a68de7bba8f5848b126bd25741eb494 (patch) | |
tree | f3da0c5853f75b3c9601b4b3a7f23dbc95d5dddd /src/resources/db/petdb.cpp | |
parent | 2ba34797598a310bd31d46a43246cf6f88d6db74 (diff) | |
download | manaplus-d8f56c2b9a68de7bba8f5848b126bd25741eb494.tar.gz manaplus-d8f56c2b9a68de7bba8f5848b126bd25741eb494.tar.bz2 manaplus-d8f56c2b9a68de7bba8f5848b126bd25741eb494.tar.xz manaplus-d8f56c2b9a68de7bba8f5848b126bd25741eb494.zip |
add support for include in pets.xml.
Diffstat (limited to 'src/resources/db/petdb.cpp')
-rw-r--r-- | src/resources/db/petdb.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/resources/db/petdb.cpp b/src/resources/db/petdb.cpp index c235200a6..7dcfd63e3 100644 --- a/src/resources/db/petdb.cpp +++ b/src/resources/db/petdb.cpp @@ -47,23 +47,36 @@ void PETDB::load() unload(); logger->log1("Initializing PET database..."); + loadXmlFile(paths.getStringValue("petsFile")); + mLoaded = true; +} - XML::Document doc(paths.getStringValue("petsFile")); +void PETDB::loadXmlFile(const std::string &fileName) +{ + XML::Document doc(fileName); const XmlNodePtr rootNode = doc.rootNode(); if (!rootNode || !xmlNameEqual(rootNode, "pets")) { logger->log("PET Database: Error while loading %s!", - paths.getStringValue("petsFile").c_str()); - mLoaded = true; + fileName.c_str()); return; } // iterate <pet>s for_each_xml_child_node(petNode, rootNode) { - if (!xmlNameEqual(petNode, "pet")) + if (xmlNameEqual(petNode, "include")) + { + const std::string name = XML::getProperty(petNode, "name", ""); + if (!name.empty()) + loadXmlFile(name); + continue; + } + else if (!xmlNameEqual(petNode, "pet")) + { continue; + } const int id = XML::getProperty(petNode, "id", 0); if (id == 0) @@ -151,8 +164,6 @@ void PETDB::load() mPETInfos[id] = currentInfo; } - - mLoaded = true; } void PETDB::unload() |