diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-01-16 20:53:04 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-01-16 20:53:04 +0300 |
commit | c39bbbafc43db2dfa17e970dfbd5e12ee1d7ceb7 (patch) | |
tree | 9ad28893c7948f79d3e01841f7f07086b636eb37 | |
parent | 64519c3ffb855c4b6ff6f428ba29173217327306 (diff) | |
download | manaplus-c39bbbafc43db2dfa17e970dfbd5e12ee1d7ceb7.tar.gz manaplus-c39bbbafc43db2dfa17e970dfbd5e12ee1d7ceb7.tar.bz2 manaplus-c39bbbafc43db2dfa17e970dfbd5e12ee1d7ceb7.tar.xz manaplus-c39bbbafc43db2dfa17e970dfbd5e12ee1d7ceb7.zip |
load mods from <mod> tag in resources.xml
-rw-r--r-- | src/gui/windows/updaterwindow.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/gui/windows/updaterwindow.cpp b/src/gui/windows/updaterwindow.cpp index 5eebbaf13..584f8e90e 100644 --- a/src/gui/windows/updaterwindow.cpp +++ b/src/gui/windows/updaterwindow.cpp @@ -60,7 +60,8 @@ const std::string updateServer2 /** * Load the given file into a vector of updateFiles. */ -static std::vector<UpdateFile> loadXMLFile(const std::string &fileName) +static std::vector<UpdateFile> loadXMLFile(const std::string &fileName, + const bool loadMods) { std::vector<UpdateFile> files; XML::Document doc(fileName, false); @@ -74,11 +75,9 @@ static std::vector<UpdateFile> loadXMLFile(const std::string &fileName) for_each_xml_child_node(fileNode, rootNode) { - if (!xmlNameEqual(fileNode, "update") - && !xmlNameEqual(fileNode, "update2")) - { + const bool isMod = xmlNameEqual(fileNode, "mod"); + if (!xmlNameEqual(fileNode, "update") && !isMod) continue; - } UpdateFile file; file.name = XML::getProperty(fileNode, "file", ""); @@ -86,6 +85,9 @@ static std::vector<UpdateFile> loadXMLFile(const std::string &fileName) file.type = XML::getProperty(fileNode, "type", "data"); file.desc = XML::getProperty(fileNode, "description", ""); file.group = XML::getProperty(fileNode, "group", ""); + if (!file.group.empty() && (!isMod || !loadMods)) + continue; + const std::string version = XML::getProperty( fileNode, "version", ""); if (!version.empty()) @@ -562,7 +564,7 @@ void UpdaterWindow::loadUpdates() if (mUpdateFiles.empty()) { // updates not downloaded mUpdateFiles = loadXMLFile(std::string(mUpdatesDir).append( - "/").append(xmlUpdateFile)); + "/").append(xmlUpdateFile), false); if (mUpdateFiles.empty()) { logger->log("Warning this server does not have a" @@ -591,8 +593,8 @@ void UpdaterWindow::loadLocalUpdates(const std::string &dir) { const ResourceManager *const resman = ResourceManager::getInstance(); - std::vector<UpdateFile> updateFiles - = loadXMLFile(std::string(dir).append("/").append(xmlUpdateFile)); + std::vector<UpdateFile> updateFiles = loadXMLFile( + std::string(dir).append("/").append(xmlUpdateFile), false); if (updateFiles.empty()) { @@ -620,8 +622,8 @@ void UpdaterWindow::loadLocalUpdates(const std::string &dir) void UpdaterWindow::unloadUpdates(const std::string &dir) { const ResourceManager *const resman = ResourceManager::getInstance(); - std::vector<UpdateFile> updateFiles - = loadXMLFile(std::string(dir).append("/").append(xmlUpdateFile)); + std::vector<UpdateFile> updateFiles = loadXMLFile( + std::string(dir).append("/").append(xmlUpdateFile), true); if (updateFiles.empty()) { @@ -643,8 +645,8 @@ void UpdaterWindow::loadManaPlusUpdates(const std::string &dir, const ResourceManager *const resman) { std::string fixPath = dir + "/fix"; - std::vector<UpdateFile> updateFiles - = loadXMLFile(std::string(fixPath).append("/").append(xmlUpdateFile)); + std::vector<UpdateFile> updateFiles = loadXMLFile( + std::string(fixPath).append("/").append(xmlUpdateFile), false); for (unsigned int updateIndex = 0, sz = static_cast<unsigned int>( updateFiles.size()); updateIndex < sz; updateIndex ++) @@ -668,8 +670,8 @@ void UpdaterWindow::unloadManaPlusUpdates(const std::string &dir, const ResourceManager *const resman) { const std::string fixPath = dir + "/fix"; - const std::vector<UpdateFile> updateFiles - = loadXMLFile(std::string(fixPath).append("/").append(xmlUpdateFile)); + const std::vector<UpdateFile> updateFiles = loadXMLFile( + std::string(fixPath).append("/").append(xmlUpdateFile), true); for (unsigned int updateIndex = 0, sz = static_cast<unsigned int>( updateFiles.size()); updateIndex < sz; updateIndex ++) @@ -796,7 +798,7 @@ void UpdaterWindow::logic() if (mCurrentFile == xmlUpdateFile) { mUpdateFiles = loadXMLFile(std::string(mUpdatesDir).append( - "/").append(xmlUpdateFile)); + "/").append(xmlUpdateFile), true); if (mUpdateFiles.empty()) { @@ -885,7 +887,7 @@ void UpdaterWindow::logic() if (mCurrentFile == xmlUpdateFile) { mTempUpdateFiles = loadXMLFile(std::string( - mUpdatesDir).append("/").append(xmlUpdateFile)); + mUpdatesDir).append("/").append(xmlUpdateFile), true); } mUpdateIndexOffset = mUpdateIndex; mUpdateIndex = 0; @@ -1015,8 +1017,8 @@ void UpdaterWindow::loadMods(const std::string &dir, } } - std::vector<UpdateFile> updateFiles2 - = loadXMLFile(std::string(fixPath).append("/").append(xmlUpdateFile)); + std::vector<UpdateFile> updateFiles2 = loadXMLFile( + std::string(fixPath).append("/").append(xmlUpdateFile), true); for (unsigned int updateIndex = 0, sz = static_cast<unsigned int>( updateFiles2.size()); updateIndex < sz; updateIndex ++) |