Loading all mods found in "mods" directory
parent
0b2f25a6e3
commit
f0b38721e0
2
data
2
data
|
@ -1 +1 @@
|
||||||
Subproject commit bacf4c9dac9efc817907ab4e172231d3396a421d
|
Subproject commit b457f36f0667997c2e1d30e556e933d19c781006
|
|
@ -401,8 +401,13 @@ bool CApplication::Create()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CResourceManager::AddLocation(m_dataPath, false);
|
|
||||||
boost::filesystem::create_directories(m_savePath);
|
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::SetSaveLocation(m_savePath);
|
||||||
CResourceManager::AddLocation(m_savePath, true);
|
CResourceManager::AddLocation(m_savePath, true);
|
||||||
|
|
||||||
|
@ -595,6 +600,23 @@ bool CApplication::CreateVideoSurface()
|
||||||
return true;
|
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()
|
void CApplication::Destroy()
|
||||||
{
|
{
|
||||||
m_joystickEnabled = false;
|
m_joystickEnabled = false;
|
||||||
|
|
|
@ -354,6 +354,9 @@ public:
|
||||||
protected:
|
protected:
|
||||||
//! Creates the window's SDL_Surface
|
//! Creates the window's SDL_Surface
|
||||||
bool CreateVideoSurface();
|
bool CreateVideoSurface();
|
||||||
|
|
||||||
|
//! Loads all mods from given directory
|
||||||
|
void LoadModsFromDir(const std::string &dir);
|
||||||
|
|
||||||
//! Processes the captured SDL event to Event struct
|
//! Processes the captured SDL event to Event struct
|
||||||
Event ProcessSystemEvent();
|
Event ProcessSystemEvent();
|
||||||
|
|
|
@ -130,6 +130,21 @@ bool CResourceManager::Exists(const std::string &filename)
|
||||||
return PHYSFS_exists(filename.c_str());
|
return PHYSFS_exists(filename.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> CResourceManager::ListFiles(const std::string &directory)
|
||||||
|
{
|
||||||
|
std::vector<std::string> result;
|
||||||
|
|
||||||
|
char **files = PHYSFS_enumerateFiles(directory.c_str());
|
||||||
|
|
||||||
|
for (char **i = files; *i != nullptr; i++) {
|
||||||
|
result.push_back(*i);
|
||||||
|
}
|
||||||
|
|
||||||
|
PHYSFS_freeList(files);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int CResourceManager::SDLClose(SDL_RWops *context)
|
int CResourceManager::SDLClose(SDL_RWops *context)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ public:
|
||||||
static SDL_RWops* GetSDLFileHandler(const std::string &filename);
|
static SDL_RWops* GetSDLFileHandler(const std::string &filename);
|
||||||
static CSNDFile* GetSNDFileHandler(const std::string &filename);
|
static CSNDFile* GetSNDFileHandler(const std::string &filename);
|
||||||
static bool Exists(const std::string &filename);
|
static bool Exists(const std::string &filename);
|
||||||
|
static std::vector<std::string> ListFiles(const std::string &directory);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static int SDLSeek(SDL_RWops *context, int offset, int whence);
|
static int SDLSeek(SDL_RWops *context, int offset, int whence);
|
||||||
|
|
Loading…
Reference in New Issue