summaryrefslogtreecommitdiffstats
path: root/src/app
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2014-08-06 12:59:27 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2014-09-21 12:29:01 +0200
commitf0b38721e05dbda1d3562abc06fec535d1aa5a07 (patch)
tree5ced0570d2d814ba9201977c09877a9e896199e1 /src/app
parent0b2f25a6e3fda014b0f5a4282283fb90b0958d42 (diff)
downloadcolobot-f0b38721e05dbda1d3562abc06fec535d1aa5a07.tar.gz
colobot-f0b38721e05dbda1d3562abc06fec535d1aa5a07.tar.bz2
colobot-f0b38721e05dbda1d3562abc06fec535d1aa5a07.zip
Loading all mods found in "mods" directory
Diffstat (limited to 'src/app')
-rw-r--r--src/app/app.cpp24
-rw-r--r--src/app/app.h3
2 files changed, 26 insertions, 1 deletions
diff --git a/src/app/app.cpp b/src/app/app.cpp
index 429a9d4..628b7a9 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -401,8 +401,13 @@ bool CApplication::Create()
return false;
}
- CResourceManager::AddLocation(m_dataPath, false);
boost::filesystem::create_directories(m_savePath);
+ boost::filesystem::create_directories(m_savePath+"/mods");
+
+ LoadModsFromDir(m_dataPath+"/mods");
+ LoadModsFromDir(m_savePath+"/mods");
+
+ CResourceManager::AddLocation(m_dataPath, false);
CResourceManager::SetSaveLocation(m_savePath);
CResourceManager::AddLocation(m_savePath, true);
@@ -595,6 +600,23 @@ bool CApplication::CreateVideoSurface()
return true;
}
+void CApplication::LoadModsFromDir(const std::string &dir)
+{
+ try {
+ boost::filesystem::directory_iterator iterator(dir);
+ for(; iterator != boost::filesystem::directory_iterator(); ++iterator)
+ {
+ std::string fn = iterator->path().string();
+ CLogger::GetInstancePointer()->Info("Loading mod: '%s'\n", fn.c_str());
+ CResourceManager::AddLocation(fn, false);
+ }
+ }
+ catch(std::exception &e)
+ {
+ CLogger::GetInstancePointer()->Warn("Unable to load mods from directory '%s': %s\n", dir.c_str(), e.what());
+ }
+}
+
void CApplication::Destroy()
{
m_joystickEnabled = false;
diff --git a/src/app/app.h b/src/app/app.h
index 0df3096..2049fb2 100644
--- a/src/app/app.h
+++ b/src/app/app.h
@@ -354,6 +354,9 @@ public:
protected:
//! Creates the window's SDL_Surface
bool CreateVideoSurface();
+
+ //! Loads all mods from given directory
+ void LoadModsFromDir(const std::string &dir);
//! Processes the captured SDL event to Event struct
Event ProcessSystemEvent();