1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-04-02 22:05:43 +02:00
vcmi/lib/modding/CModHandler.h
Ivan Savenko ba9e3dca9d Mod management rework, part 1
- Replaced CModInfo class with constant ModDescription class
- Simplified mod loading logic
- Extracted some functionality from ModHandler into separate classes for
future reuse by Launcher
2024-11-26 13:55:46 +00:00

71 lines
2.1 KiB
C++

/*
* CModHandler.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
VCMI_LIB_NAMESPACE_BEGIN
class CModHandler;
class ModDescription;
class CContentHandler;
class ResourcePath;
class ModManager;
class ISimpleResourceLoader;
using TModID = std::string;
class DLL_LINKAGE CModHandler final : boost::noncopyable
{
std::unique_ptr<ModManager> modManager;
void loadTranslation(const TModID & modName);
void checkModFilesystemsConflicts(const std::map<TModID, ISimpleResourceLoader *> & modFilesystems);
public:
std::shared_ptr<CContentHandler> content; //FIXME: make private
/// receives list of available mods and trying to load mod.json from all of them
void initializeConfig();
void loadModFilesystems();
/// returns ID of mod that provides selected file resource
TModID findResourceOrigin(const ResourcePath & name) const;
/// Returns assumed language ID of mod that provides selected file resource
std::string findResourceLanguage(const ResourcePath & name) const;
/// Returns assumed encoding of language of mod that provides selected file resource
std::string findResourceEncoding(const ResourcePath & name) const;
std::string getModLanguage(const TModID & modId) const;
std::set<TModID> getModDependencies(const TModID & modId) const;
std::set<TModID> getModDependencies(const TModID & modId, bool & isModFound) const;
std::set<TModID> getModSoftDependencies(const TModID & modId) const;
std::set<TModID> getModEnabledSoftDependencies(const TModID & modId) const;
/// returns list of all (active) mods
std::vector<std::string> getAllMods() const;
std::vector<std::string> getActiveMods() const;
/// Returns human-readable string that describes errors encounter during mod loading, such as missing dependencies
std::string getModLoadErrors() const;
const ModDescription & getModInfo(const TModID & modId) const;
/// load content from all available mods
void load();
void afterLoad(bool onlyEssential);
CModHandler();
~CModHandler();
};
VCMI_LIB_NAMESPACE_END