/* * 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; void loadTranslation(const TModID & modName); void checkModFilesystemsConflicts(const std::map & modFilesystems); public: std::shared_ptr 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 getModDependencies(const TModID & modId) const; std::set getModDependencies(const TModID & modId, bool & isModFound) const; std::set getModSoftDependencies(const TModID & modId) const; std::set getModEnabledSoftDependencies(const TModID & modId) const; /// returns list of all (active) mods std::vector getAllMods() const; std::vector 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