diff options
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/resourcemanager.cpp | 15 | ||||
-rw-r--r-- | src/resources/resourcemanager.h | 34 | ||||
-rw-r--r-- | src/resources/theme.cpp | 4 |
3 files changed, 33 insertions, 20 deletions
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index e2979f06..f43aea41 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -230,6 +230,11 @@ std::string ResourceManager::getPath(const std::string &file) return path; } +SDL_RWops *ResourceManager::open(const std::string &path) +{ + return PHYSFSRWOPS_openRead(path.c_str()); +} + Resource *ResourceManager::get(const std::string &idPath, const std::function<Resource *()> &generator) { @@ -265,10 +270,10 @@ Resource *ResourceManager::get(const std::string &idPath, return resource; } -Resource *ResourceManager::load(const std::string &path, loader fun) +Resource *ResourceManager::get(const std::string &path, loader fun) { return get(path, [&] () -> Resource * { - if (SDL_RWops *rw = PHYSFSRWOPS_openRead(path.c_str())) + if (SDL_RWops *rw = open(path)) return fun(rw); return nullptr; }); @@ -276,12 +281,12 @@ Resource *ResourceManager::load(const std::string &path, loader fun) Music *ResourceManager::getMusic(const std::string &idPath) { - return static_cast<Music*>(load(idPath, Music::load)); + return static_cast<Music*>(get(idPath, Music::load)); } SoundEffect *ResourceManager::getSoundEffect(const std::string &idPath) { - return static_cast<SoundEffect*>(load(idPath, SoundEffect::load)); + return static_cast<SoundEffect*>(get(idPath, SoundEffect::load)); } Image *ResourceManager::getImage(const std::string &idPath) @@ -295,7 +300,7 @@ Image *ResourceManager::getImage(const std::string &idPath) d = std::make_unique<Dye>(path.substr(p + 1)); path = path.substr(0, p); } - SDL_RWops *rw = PHYSFSRWOPS_openRead(path.c_str()); + SDL_RWops *rw = open(path); if (!rw) return nullptr; diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h index 7a92818f..6694321c 100644 --- a/src/resources/resourcemanager.h +++ b/src/resources/resourcemanager.h @@ -105,6 +105,16 @@ class ResourceManager std::string getPath(const std::string &file); /** + * Opens a file for reading. The caller is responsible for closing the + * file. + * + * @param path The file name. + * @return A valid SDL_RWops pointer or <code>NULL</code> if the file + * could not be opened. + */ + SDL_RWops *open(const std::string &path); + + /** * Creates a resource and adds it to the resource map. * * @param idPath The resource identifier path. @@ -124,18 +134,7 @@ class ResourceManager * @return A valid resource or <code>NULL</code> if the resource could * not be loaded. */ - Resource *load(const std::string &path, loader fun); - - /** - * Copies a file from one place to another (useful for extracting - * raw files from a zip archive, for example) - * - * @param src Source file name - * @param dst Destination file name - * @return true on success, false on failure. An error message should be - * in the log file. - */ - bool copyFile(const std::string &src, const std::string &dst); + Resource *get(const std::string &path, loader fun); /** * Convenience wrapper around ResourceManager::get for loading @@ -183,6 +182,17 @@ class ResourceManager bool inflate = true); /** + * Copies a file from one place to another (useful for extracting + * raw files from a zip archive, for example) + * + * @param src Source file name + * @param dst Destination file name + * @return true on success, false on failure. An error message should be + * in the log file. + */ + bool copyFile(const std::string &src, const std::string &dst); + + /** * Retrieves the contents of a text file. */ std::vector<std::string> loadTextFile(const std::string &fileName); diff --git a/src/resources/theme.cpp b/src/resources/theme.cpp index 1db92feb..67cd6650 100644 --- a/src/resources/theme.cpp +++ b/src/resources/theme.cpp @@ -49,9 +49,7 @@ static void initDefaultThemePath() ResourceManager *resman = ResourceManager::getInstance(); defaultThemePath = branding.getStringValue("guiThemePath"); - if (!defaultThemePath.empty() && resman->isDirectory(defaultThemePath)) - return; - else + if (defaultThemePath.empty() || !resman->isDirectory(defaultThemePath)) defaultThemePath = "graphics/gui/"; } |