From 9c83e992d7f7b0a53e102df6265066fc25141dfa Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 6 Jan 2014 15:01:55 +0300 Subject: Add support for include in avatars.xml. --- src/resources/db/avatardb.cpp | 16 ++++++++++++++-- src/resources/db/avatardb.h | 4 ++++ 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/resources/db/avatardb.cpp b/src/resources/db/avatardb.cpp index 8ff58efc5..100803a2a 100644 --- a/src/resources/db/avatardb.cpp +++ b/src/resources/db/avatardb.cpp @@ -43,20 +43,32 @@ void AvatarDB::load() { if (mLoaded) unload(); + loadXmlFile(paths.getStringValue("avatarsFile")); +} - XML::Document doc(paths.getStringValue("avatarsFile")); +void AvatarDB::loadXmlFile(const std::string &fileName) +{ + XML::Document doc(fileName); const XmlNodePtr rootNode = doc.rootNode(); if (!rootNode || !xmlNameEqual(rootNode, "avatars")) { logger->log("Avatars Database: Error while loading %s!", - paths.getStringValue("avatarsFile").c_str()); + fileName.c_str()); mLoaded = true; return; } for_each_xml_child_node(avatarNode, rootNode) { + if (xmlNameEqual(avatarNode, "include")) + { + const std::string name = XML::getProperty(avatarNode, "name", ""); + if (!name.empty()) + loadXmlFile(name); + continue; + } + if (!xmlNameEqual(avatarNode, "avatar")) continue; diff --git a/src/resources/db/avatardb.h b/src/resources/db/avatardb.h index 0b4894c9c..f86ac4882 100644 --- a/src/resources/db/avatardb.h +++ b/src/resources/db/avatardb.h @@ -23,6 +23,8 @@ #ifndef RESOURCES_DB_AVATARDB_H #define RESOURCES_DB_AVATARDB_H +#include + #include "localconsts.h" class BeingInfo; @@ -34,6 +36,8 @@ namespace AvatarDB void unload(); BeingInfo *get(const int id) A_WARN_UNUSED; + + void loadXmlFile(const std::string &fileName); } #endif // RESOURCES_DB_AVATARDB_H -- cgit v1.2.3-60-g2f50