浏览代码

Auto-recover from cases when active preset is invalid

Ivan Savenko 10 月之前
父节点
当前提交
50838f24bf
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. 5 1
      lib/modding/ModManager.cpp

+ 5 - 1
lib/modding/ModManager.cpp

@@ -163,7 +163,7 @@ ModsPresetState::ModsPresetState()
 		CResourceHandler::get("local")->createResource(settingsPath.getOriginalName() + ".json");
 		CResourceHandler::get("local")->createResource(settingsPath.getOriginalName() + ".json");
 	}
 	}
 
 
-	if(modConfig["presets"].isNull())
+	if(modConfig["presets"].isNull() || modConfig["presets"].Struct().empty())
 	{
 	{
 		modConfig["activePreset"] = JsonNode("default");
 		modConfig["activePreset"] = JsonNode("default");
 		if(modConfig["activeMods"].isNull())
 		if(modConfig["activeMods"].isNull())
@@ -171,6 +171,10 @@ ModsPresetState::ModsPresetState()
 		else
 		else
 			importInitialPreset(); // 1.5 format import
 			importInitialPreset(); // 1.5 format import
 	}
 	}
+
+	auto allPresets = getAllPresets();
+	if (!vstd::contains(allPresets, modConfig["activePreset"].String()))
+		modConfig["activePreset"] = JsonNode(allPresets.front());
 }
 }
 
 
 void ModsPresetState::createInitialPreset()
 void ModsPresetState::createInitialPreset()