1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-10 22:31:40 +02:00

Correctly remove unsupported (e.g. era) mods from active preset

This commit is contained in:
Ivan Savenko
2025-01-01 21:01:46 +00:00
parent ea0c553148
commit 46442fbcca
2 changed files with 18 additions and 4 deletions

View File

@@ -549,7 +549,7 @@ double ModManager::getInstalledModSizeMegabytes(const TModID & modName) const
void ModManager::eraseMissingModsFromPreset()
{
const TModList & installedMods = modsState->getInstalledMods();
const TModList & installedMods = getInstalledValidMods();
const TModList & rootMods = modsPreset->getActiveRootMods();
modsPreset->removeOldMods(installedMods);
@@ -572,7 +572,7 @@ void ModManager::eraseMissingModsFromPreset()
void ModManager::addNewModsToPreset()
{
const TModList & installedMods = modsState->getInstalledMods();
const TModList & installedMods = getInstalledValidMods();
for(const auto & modID : installedMods)
{
@@ -591,6 +591,19 @@ void ModManager::addNewModsToPreset()
}
}
TModList ModManager::getInstalledValidMods() const
{
TModList installedMods = modsState->getInstalledMods();
TModList validMods = modsStorage->getAllMods();
TModList result;
for (const auto & modID : installedMods)
if (vstd::contains(validMods, modID))
result.push_back(modID);
return result;
}
TModList ModManager::collectDependenciesRecursive(const TModID & modID) const
{
TModList result;
@@ -688,7 +701,7 @@ void ModManager::updatePreset(const ModDependenciesResolver & testResolver)
for (const auto & modID : newActiveMods)
{
assert(vstd::contains(modsState->getInstalledMods(), modID));
assert(vstd::contains(getInstalledValidMods(), modID));
modsPreset->setModActive(modID, true);
}
@@ -847,7 +860,7 @@ std::tuple<std::string, TModList> ModManager::importPreset(const JsonNode & data
std::string presetName = modsPreset->importPreset(data);
TModList requiredMods = modsPreset->getRootMods(presetName);
TModList installedMods = modsState->getInstalledMods();
TModList installedMods = getInstalledValidMods();
TModList missingMods;
for (const auto & modID : requiredMods)

View File

@@ -132,6 +132,7 @@ class DLL_LINKAGE ModManager : boost::noncopyable
void addNewModsToPreset();
void updatePreset(const ModDependenciesResolver & newData);
TModList getInstalledValidMods() const;
TModList collectDependenciesRecursive(const TModID & modID) const;
void tryEnableMod(const TModID & modList);