Przeglądaj źródła

Merge pull request #6126 from MichalZr6/bad_maps_handling

Map loader/saver rework: fix empty modScope
Ivan Savenko 1 dzień temu
rodzic
commit
085b9f17ec

+ 6 - 0
lib/mapping/MapFormatJson.cpp

@@ -1044,6 +1044,8 @@ void CMapLoaderJson::MapObjectLoader::construct()
 		return;
 		return;
 	}
 	}
 
 
+	configuration.setModScope(ModScope::scopeGame());
+
 	auto handler = LIBRARY->objtypeh->getHandlerFor( ModScope::scopeMap(), typeName, subtypeName);
 	auto handler = LIBRARY->objtypeh->getHandlerFor( ModScope::scopeMap(), typeName, subtypeName);
 
 
 	auto appearance = std::make_shared<ObjectTemplate>();
 	auto appearance = std::make_shared<ObjectTemplate>();
@@ -1293,6 +1295,8 @@ void CMapSaverJson::writeObjects()
 		auto temp = handler.enterStruct(obj->instanceName);
 		auto temp = handler.enterStruct(obj->instanceName);
 
 
 		obj->serializeJson(handler);
 		obj->serializeJson(handler);
+
+		data[obj->instanceName].setModScope(ModScope::scopeGame());
 	}
 	}
 
 
 	if(map->grailPos.isValid())
 	if(map->grailPos.isValid())
@@ -1306,6 +1310,8 @@ void CMapSaverJson::writeObjects()
 
 
 		grail["options"]["radius"].Float() = map->grailRadius;
 		grail["options"]["radius"].Float() = map->grailRadius;
 
 
+		grail.setModScope(ModScope::scopeGame());
+
 		data["grail"] = grail;
 		data["grail"] = grail;
 	}
 	}
 
 

+ 1 - 1
lib/modding/IdentifierStorage.cpp

@@ -246,7 +246,7 @@ std::optional<si32> CIdentifierStorage::getIdentifierImpl(const ObjectCallback &
 
 
 	if (idList.size() == 1)
 	if (idList.size() == 1)
 		return idList.front().id;
 		return idList.front().id;
-	if (!silent)
+	if (!silent && options.localScope != ModScope::scopeGame())
 		showIdentifierResolutionErrorDetails(options);
 		showIdentifierResolutionErrorDetails(options);
 	return std::optional<si32>();
 	return std::optional<si32>();
 }
 }