1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-15 00:05:02 +02:00

Merge pull request #2889 from Nordsoft91/mod-compatibility-check

Proper mod compatibility check logic
This commit is contained in:
Nordsoft91
2023-09-26 19:29:46 +02:00
committed by GitHub
29 changed files with 282 additions and 152 deletions

View File

@ -342,7 +342,7 @@ namespace TerrainDetail
///CMapFormatJson
const int CMapFormatJson::VERSION_MAJOR = 1;
const int CMapFormatJson::VERSION_MINOR = 2;
const int CMapFormatJson::VERSION_MINOR = 3;
const std::string CMapFormatJson::HEADER_FILE_NAME = "header.json";
const std::string CMapFormatJson::OBJECTS_FILE_NAME = "objects.json";
@ -958,7 +958,19 @@ void CMapLoaderJson::readHeader(const bool complete)
if(!header["mods"].isNull())
{
for(auto & mod : header["mods"].Vector())
mapHeader->mods[mod["name"].String()] = CModVersion::fromString(mod["version"].String());
{
CModInfo::VerificationInfo info;
info.version = CModVersion::fromString(mod["version"].String());
info.checksum = mod["checksum"].Integer();
info.name = mod["name"].String();
info.parent = mod["parent"].String();
info.impactsGameplay = true;
if(!mod["modId"].isNull())
mapHeader->mods[mod["modId"].String()] = info;
else
mapHeader->mods[mod["name"].String()] = info;
}
}
//todo: multilevel map load support
@ -1299,8 +1311,11 @@ void CMapSaverJson::writeHeader()
for(const auto & mod : mapHeader->mods)
{
JsonNode modWriter;
modWriter["name"].String() = mod.first;
modWriter["version"].String() = mod.second.toString();
modWriter["modId"].String() = mod.first;
modWriter["name"].String() = mod.second.name;
modWriter["parent"].String() = mod.second.parent;
modWriter["version"].String() = mod.second.version.toString();
modWriter["checksum"].Integer() = mod.second.checksum;
mods.Vector().push_back(modWriter);
}