1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-26 22:57:00 +02:00

- fixed crash on loading modsettings.json from 0.94

This commit is contained in:
Ivan Savenko 2014-01-09 20:15:32 +00:00
parent edacdf34e5
commit bc1e726be4

View File

@ -543,24 +543,11 @@ std::vector <TModID> CModHandler::resolveDependencies(std::vector <TModID> input
return output; return output;
} }
static JsonNode updateModSettingsFormat(JsonNode config)
{
for (auto & entry : config["activeMods"].Struct())
{
if (entry.second.getType() == JsonNode::DATA_BOOL)
{
entry.second["active"].Bool() = entry.second.Bool();
}
}
return config;
}
static JsonNode loadModSettings(std::string path) static JsonNode loadModSettings(std::string path)
{ {
if (CResourceHandler::get()->existsResource(ResourceID(path))) if (CResourceHandler::get()->existsResource(ResourceID(path)))
{ {
// mod compatibility: check if modSettings has old, 0.94 format return JsonNode(ResourceID(path, EResType::TEXT));
return updateModSettingsFormat(JsonNode(ResourceID(path, EResType::TEXT)));
} }
// Probably new install. Create initial configuration // Probably new install. Create initial configuration
CResourceHandler::get()->createResource(path); CResourceHandler::get()->createResource(path);
@ -610,10 +597,11 @@ void CModInfo::updateChecksum(ui32 newChecksum)
void CModInfo::loadLocalData(const JsonNode & data) void CModInfo::loadLocalData(const JsonNode & data)
{ {
bool validated = false; bool validated = false;
if (data.isNull())
{
enabled = true; enabled = true;
checksum = 0; checksum = 0;
if (data.getType() == JsonNode::DATA_BOOL)
{
enabled = data.Bool();
} }
else else
{ {