1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-27 00:41:08 +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)