1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
/*
* 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;
std::map<std::string, uint32_t> modChecksums;
std::set<std::string> validationPassed;
void loadTranslation(const TModID & modName);
void checkModFilesystemsConflicts(const std::map<TModID, ISimpleResourceLoader *> & modFilesystems);
bool isModValidationNeeded(const ModDescription & mod) const;
public:
std::shared_ptr<CContentHandler> content;
/// 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;
const std::vector<std::string> & getActiveMods() 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
|