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:
@ -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();
|
||||||
|
@ -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"];
|
||||||
|
Reference in New Issue
Block a user