I want to serialize “core” data into a json file. All data, creatures, artifacts, factions… etc. And I need it to be complete (heoriginal merged with “core mode”)
bool CContentHandler::ContentTypeHandler::loadMod(std::string modName, bool validate)
{
ModInfo & modInfo = modData[modName];
bool result = true;
auto performValidate = &,this](JsonNode & data, const std::string & name){
handler->beforeValidate(data);
if (validate)
result &= JsonUtils::validate(data, "vcmi:" + objectName, name);
};
// apply patches
if (!modInfo.patches.isNull())
JsonUtils::merge(modInfo.modData, modInfo.patches);
for(auto & entry : modInfo.modData.Struct())
{
const std::string & name = entry.first;
JsonNode & data = entry.second;
if (vstd::contains(data.Struct(), "index") && !data"index"].isNull())
{
// try to add H3 object data
size_t index = data"index"].Float();
if (originalData.size() > index)
{
JsonUtils::merge(originalData[index], data);
performValidate(originalData[index],name);
handler->loadObject(modName, name, originalData[index], index);
originalData[index].clear(); // do not use same data twice (same ID)
------------------> logGlobal->traceStream() << "\n" << originalData[index];
continue;
}
}
// normal new object or one with index bigger that data size
performValidate(data,name);
handler->loadObject(modName, name, data);
}
return result;
}
I try to do that like the line above
logGlobal->traceStream() << "\n" << originalData[index];
and it does not work.
Is this the right place? Can i do it this way?