浏览代码

Merge pull request #4993 from IvanSavenko/mod_preset_fixes

Mod preset fixes
Ivan Savenko 10 月之前
父节点
当前提交
fad91acd3a

+ 1 - 1
launcher/modManager/modstate.cpp

@@ -217,7 +217,7 @@ bool ModState::isInstalled() const
 
 bool ModState::isUpdateAvailable() const
 {
-	return getInstalledVersion() != getRepositoryVersion() && !getRepositoryVersion().isEmpty() && !getInstalledVersion().isEmpty();
+	return impl.isUpdateAvailable();
 }
 
 bool ModState::isCompatible() const

+ 4 - 4
lib/modding/CModHandler.cpp

@@ -266,9 +266,9 @@ void CModHandler::load()
 		const auto & modInfo = getModInfo(modName);
 		bool isValid = content->preloadData(modInfo, isModValidationNeeded(modInfo));
 		if (isValid)
-			logGlobal->info("\t\tParsing mod: OK (%s)", modInfo.getName());
+			logGlobal->info("\t\tParsing mod: OK (%s)", modInfo.getID());
 		else
-			logGlobal->warn("\t\tParsing mod: Issues found! (%s)", modInfo.getName());
+			logGlobal->warn("\t\tParsing mod: Issues found! (%s)", modInfo.getID());
 
 		if (!isValid)
 			validationPassed.erase(modName);
@@ -280,9 +280,9 @@ void CModHandler::load()
 		const auto & modInfo = getModInfo(modName);
 		bool isValid = content->load(getModInfo(modName), isModValidationNeeded(getModInfo(modName)));
 		if (isValid)
-			logGlobal->info("\t\tLoading mod: OK (%s)", modInfo.getName());
+			logGlobal->info("\t\tLoading mod: OK (%s)", modInfo.getID());
 		else
-			logGlobal->warn("\t\tLoading mod: Issues found! (%s)", modInfo.getName());
+			logGlobal->warn("\t\tLoading mod: Issues found! (%s)", modInfo.getID());
 
 		if (!isValid)
 			validationPassed.erase(modName);

+ 14 - 0
lib/modding/ModDescription.cpp

@@ -216,4 +216,18 @@ bool ModDescription::affectsGameplay() const
 	return false;
 }
 
+bool ModDescription::isUpdateAvailable() const
+{
+	if (getRepositoryValue("version").isNull())
+		return false;
+
+	if (getLocalValue("version").isNull())
+		return false;
+
+	auto localVersion = CModVersion::fromString(getLocalValue("version").String());
+	auto repositoryVersion = CModVersion::fromString(getRepositoryValue("version").String());
+
+	return localVersion < repositoryVersion;
+}
+
 VCMI_LIB_NAMESPACE_END

+ 1 - 0
lib/modding/ModDescription.h

@@ -58,6 +58,7 @@ public:
 	ModVerificationInfo getVerificationInfo() const;
 
 	bool isCompatible() const;
+	bool isUpdateAvailable() const;
 
 	bool affectsGameplay() const;
 	bool isCompatibility() const;

+ 1 - 1
lib/modding/ModManager.cpp

@@ -287,7 +287,7 @@ void ModsPresetState::eraseModSetting(const TModID & modName, const TModID & set
 {
 	const std::string & currentPresetName = modConfig["activePreset"].String();
 	JsonNode & currentPreset = modConfig["presets"][currentPresetName];
-	currentPreset["settings"][modName].Struct().erase(modName);
+	currentPreset["settings"][modName].Struct().erase(settingName);
 }
 
 std::vector<TModID> ModsPresetState::getActiveMods() const