1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Reworked mod handling in Launcher in order to unify code with lib

This commit is contained in:
Ivan Savenko
2024-11-12 20:00:21 +00:00
parent 4945370fe3
commit f8724b9558
24 changed files with 746 additions and 1127 deletions

View File

@@ -19,7 +19,7 @@ VCMI_LIB_NAMESPACE_BEGIN
ModDescription::ModDescription(const TModID & fullID, const JsonNode & config)
: identifier(fullID)
, config(std::make_unique<JsonNode>(config))
, localConfig(std::make_unique<JsonNode>(config))
, dependencies(loadModList(config["depends"]))
, softDependencies(loadModList(config["softDepends"]))
, conflicts(loadModList(config["conflicts"]))
@@ -72,27 +72,42 @@ const std::string & ModDescription::getBaseLanguage() const
{
static const std::string defaultLanguage = "english";
return getConfig()["language"].isString() ? getConfig()["language"].String() : defaultLanguage;
return getLocalConfig()["language"].isString() ? getLocalConfig()["language"].String() : defaultLanguage;
}
const std::string & ModDescription::getName() const
{
return getConfig()["name"].String();
return getLocalConfig()["name"].String();
}
const JsonNode & ModDescription::getFilesystemConfig() const
{
return getConfig()["filesystem"];
return getLocalConfig()["filesystem"];
}
const JsonNode & ModDescription::getConfig() const
const JsonNode & ModDescription::getLocalConfig() const
{
return *config;
return *localConfig;
}
const JsonNode & ModDescription::getValue(const std::string & keyName) const
{
return getLocalConfig()[keyName];
}
const JsonNode & ModDescription::getLocalValue(const std::string & keyName) const
{
return getLocalConfig()[keyName];
}
const JsonNode & ModDescription::getRepositoryValue(const std::string & keyName) const
{
return (*repositoryConfig)[keyName];
}
CModVersion ModDescription::getVersion() const
{
return CModVersion::fromString(getConfig()["version"].String());
return CModVersion::fromString(getLocalConfig()["version"].String());
}
ModVerificationInfo ModDescription::getVerificationInfo() const
@@ -108,17 +123,22 @@ ModVerificationInfo ModDescription::getVerificationInfo() const
bool ModDescription::isCompatibility() const
{
return getConfig()["modType"].String() == "Compatibility";
return getLocalConfig()["modType"].String() == "Compatibility";
}
bool ModDescription::isTranslation() const
{
return getConfig()["modType"].String() == "Translation";
return getLocalConfig()["modType"].String() == "Translation";
}
bool ModDescription::keepDisabled() const
{
return getConfig()["keepDisabled"].Bool();
return getLocalConfig()["keepDisabled"].Bool();
}
bool ModDescription::isInstalled() const
{
return !localConfig->isNull();
}
bool ModDescription::affectsGameplay() const