From d8f56c2b9a68de7bba8f5848b126bd25741eb494 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 6 Jan 2014 18:08:30 +0300 Subject: add support for include in pets.xml. --- src/resources/db/petdb.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/resources/db/petdb.cpp') 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 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() -- cgit v1.2.3-60-g2f50