summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-01-06 19:10:41 +0300
committerAndrei Karas <akaras@inbox.ru>2014-01-06 19:10:41 +0300
commitc2177ba1356a268d1edbec316870821fa0578fdd (patch)
tree29820599afc31a83943d6581c0a58f0ac8b74943
parent5007515135c05104a6b0e5b7991de310f53ce8ce (diff)
downloadmanaplus-c2177ba1356a268d1edbec316870821fa0578fdd.tar.gz
manaplus-c2177ba1356a268d1edbec316870821fa0578fdd.tar.bz2
manaplus-c2177ba1356a268d1edbec316870821fa0578fdd.tar.xz
manaplus-c2177ba1356a268d1edbec316870821fa0578fdd.zip
add support for include in quests.xml.
-rw-r--r--src/gui/windows/questswindow.cpp15
-rw-r--r--src/gui/windows/questswindow.h2
2 files changed, 12 insertions, 5 deletions
diff --git a/src/gui/windows/questswindow.cpp b/src/gui/windows/questswindow.cpp
index 0cd04dbc1..ec40f759f 100644
--- a/src/gui/windows/questswindow.cpp
+++ b/src/gui/windows/questswindow.cpp
@@ -181,7 +181,7 @@ QuestsWindow::QuestsWindow() :
loadWindowState();
enableVisibleSound(true);
- loadXml();
+ loadXmlFile(paths.getStringValue("questsFile"));
}
QuestsWindow::~QuestsWindow()
@@ -218,16 +218,23 @@ QuestsWindow::~QuestsWindow()
}
}
-void QuestsWindow::loadXml()
+void QuestsWindow::loadXmlFile(const std::string &fileName)
{
- XML::Document doc(paths.getStringValue("questsFile"));
+ XML::Document doc(fileName);
const XmlNodePtr root = doc.rootNode();
if (!root)
return;
for_each_xml_child_node(varNode, root)
{
- if (xmlNameEqual(varNode, "var"))
+ if (xmlNameEqual(varNode, "include"))
+ {
+ const std::string name = XML::getProperty(varNode, "name", "");
+ if (!name.empty())
+ loadXmlFile(name);
+ continue;
+ }
+ else if (xmlNameEqual(varNode, "var"))
{
const int id = XML::getProperty(varNode, "id", 0);
if (id < 0)
diff --git a/src/gui/windows/questswindow.h b/src/gui/windows/questswindow.h
index 5b008e93e..7ecc86c84 100644
--- a/src/gui/windows/questswindow.h
+++ b/src/gui/windows/questswindow.h
@@ -72,7 +72,7 @@ class QuestsWindow final : public Window,
void addEffect(Being *const being);
private:
- void loadXml();
+ void loadXmlFile(const std::string &fileName);
void loadQuest(const int var, const XmlNodePtr node);