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

Read and write mods into map

This commit is contained in:
nordsoft
2023-04-12 02:59:55 +04:00
parent e669d31d33
commit d244702abc
2 changed files with 22 additions and 1 deletions

View File

@ -170,6 +170,10 @@ void CMapLoaderH3M::readHeader()
{ {
throw std::runtime_error("Invalid map format!"); throw std::runtime_error("Invalid map format!");
} }
// include basic mod
if(mapHeader->version == EMapFormat::WOG)
mapHeader->mods["wake-of-gods"];
// Read map name, description, dimensions,... // Read map name, description, dimensions,...
mapHeader->areAnyPlayers = reader->readBool(); mapHeader->areAnyPlayers = reader->readBool();

View File

@ -339,7 +339,7 @@ namespace TerrainDetail
///CMapFormatJson ///CMapFormatJson
const int CMapFormatJson::VERSION_MAJOR = 1; const int CMapFormatJson::VERSION_MAJOR = 1;
const int CMapFormatJson::VERSION_MINOR = 0; const int CMapFormatJson::VERSION_MINOR = 1;
const std::string CMapFormatJson::HEADER_FILE_NAME = "header.json"; const std::string CMapFormatJson::HEADER_FILE_NAME = "header.json";
const std::string CMapFormatJson::OBJECTS_FILE_NAME = "objects.json"; const std::string CMapFormatJson::OBJECTS_FILE_NAME = "objects.json";
@ -947,6 +947,13 @@ void CMapLoaderJson::readHeader(const bool complete)
JsonDeserializer handler(mapObjectResolver.get(), header); JsonDeserializer handler(mapObjectResolver.get(), header);
mapHeader->version = EMapFormat::VCMI;//todo: new version field mapHeader->version = EMapFormat::VCMI;//todo: new version field
//loading mods
if(!header["mods"].isNull())
{
for(auto & mod : header["mods"].Vector())
mapHeader->mods[mod["name"].String()] = CModInfo::Version::fromString(mod["version"].String());
}
//todo: multilevel map load support //todo: multilevel map load support
{ {
@ -1279,6 +1286,16 @@ void CMapSaverJson::writeHeader()
header["versionMajor"].Float() = VERSION_MAJOR; header["versionMajor"].Float() = VERSION_MAJOR;
header["versionMinor"].Float() = VERSION_MINOR; header["versionMinor"].Float() = VERSION_MINOR;
//write mods
JsonNode & mods = header["mods"];
for(const auto & mod : mapHeader->mods)
{
JsonNode modWriter;
modWriter["name"].String() = mod.first;
modWriter["version"].String() = mod.second.toString();
mods.Vector().push_back(modWriter);
}
//todo: multilevel map save support //todo: multilevel map save support
JsonNode & levels = header["mapLevels"]; JsonNode & levels = header["mapLevels"];