1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-17 00:07:41 +02:00

Fixed copying zone settings.

This commit is contained in:
DjWarmonger
2014-06-04 15:41:32 +02:00
parent fdb81f4d5c
commit fe05de9aff
2 changed files with 29 additions and 18 deletions

View File

@ -16,19 +16,19 @@
{ {
"type" : "playerStart", "size" : 1, "owner" : 2, "type" : "playerStart", "size" : 1, "owner" : 2,
"playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true, "playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true,
"treaureLikeZone" : 1 "treasureLikeZone" : 1
}, },
"3" : "3" :
{ {
"type" : "playerStart", "size" : 1, "owner" : 3, "type" : "playerStart", "size" : 1, "owner" : 3,
"playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true, "playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true,
"treaureLikeZone" : 1 "treasureLikeZone" : 1
}, },
"4" : "4" :
{ {
"type" : "playerStart", "size" : 1, "owner" : 4, "type" : "playerStart", "size" : 1, "owner" : 4,
"playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true, "playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true,
"treaureLikeZone" : 1 "treasureLikeZone" : 1
}, },
"5" : "5" :
{ {
@ -60,7 +60,7 @@
{ {
"type" : "playerStart", "size" : 1, "owner" : 2, "type" : "playerStart", "size" : 1, "owner" : 2,
"playerTowns" : { "castles" : 1 }, "playerTowns" : { "castles" : 1 },
"treaureLikeZone" : 1 "treasureLikeZone" : 1
}, },
"3" : "3" :
{ {
@ -70,7 +70,7 @@
"4" : "4" :
{ {
"type" : "treasure", "size" : 2, "neutralTowns" : { "towns" : 1 }, "townTypeLikeZone" : "2", "type" : "treasure", "size" : 2, "neutralTowns" : { "towns" : 1 }, "townTypeLikeZone" : "2",
"treaureLikeZone" : 3 "treasureLikeZone" : 3
}, },
"5" : "5" :
{ {
@ -113,14 +113,14 @@
"treaureLikeZone" : 1 "treaureLikeZone" : 1
}, },
"4" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "1", "treasure" : {"min" : 3000, "max": 10000} }, "4" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "1", "treasure" : {"min" : 3000, "max": 10000} },
"5" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "1", "treaureLikeZone" : 4}, "5" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "1", "treasureLikeZone" : 4},
"6" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "2", "treaureLikeZone" : 4 }, "6" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "2", "treasureLikeZone" : 4 },
"7" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "2", "treaureLikeZone" : 4 }, "7" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "2", "treasureLikeZone" : 4 },
"8" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "3", "treaureLikeZone" : 4 }, "8" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "3", "treasureLikeZone" : 4 },
"9" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "3", "treaureLikeZone" : 4 }, "9" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "3", "treasureLikeZone" : 4 },
"10" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasure" : {"min" : 10000, "max": 25000} }, "10" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasure" : {"min" : 10000, "max": 25000} },
"11" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treaureLikeZone" : 10 }, "11" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasureLikeZone" : 10 },
"12" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treaureLikeZone" : 10 } "12" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasureLikeZone" : 10 }
}, },
"connections" : "connections" :
[ [

View File

@ -63,9 +63,6 @@ void CJsonRmgTemplateLoader::loadTemplates()
zone->setMatchTerrainToTown(zoneNode["matchTerrainToTown"].Bool()); zone->setMatchTerrainToTown(zoneNode["matchTerrainToTown"].Bool());
zone->setTerrainTypes(parseTerrainTypes(zoneNode["terrainTypes"].Vector(), zone->getDefaultTerrainTypes())); zone->setTerrainTypes(parseTerrainTypes(zoneNode["terrainTypes"].Vector(), zone->getDefaultTerrainTypes()));
zone->setTownsAreSameType((zoneNode["townsAreSameType"].Bool())); zone->setTownsAreSameType((zoneNode["townsAreSameType"].Bool()));
//TODO: do these lines even do anything?
if(!zoneNode["terrainTypeLikeZone"].isNull()) zone->setTerrainTypeLikeZone(boost::lexical_cast<int>(zoneNode["terrainTypeLikeZone"].String()));
if(!zoneNode["townTypeLikeZone"].isNull()) zone->setTownTypeLikeZone(boost::lexical_cast<int>(zoneNode["townTypeLikeZone"].String()));
//treasures //treasures
if (!zoneNode["treasure"].isNull()) if (!zoneNode["treasure"].isNull())
@ -80,17 +77,31 @@ void CJsonRmgTemplateLoader::loadTemplates()
zone->addTreasureInfo(ti); zone->addTreasureInfo(ti);
} }
} }
zones[zone->getId()] = zone;
}
//copy settings from already parsed zones
for (const auto & zonePair : templateNode["zones"].Struct())
{
auto zoneId = boost::lexical_cast<TRmgTemplateZoneId>(zonePair.first);
auto zone = zones[zoneId];
const auto & zoneNode = zonePair.second;
//TODO: do these lines even do anything?
if(!zoneNode["terrainTypeLikeZone"].isNull()) zone->setTerrainTypeLikeZone(boost::lexical_cast<int>(zoneNode["terrainTypeLikeZone"].String()));
if(!zoneNode["townTypeLikeZone"].isNull()) zone->setTownTypeLikeZone(boost::lexical_cast<int>(zoneNode["townTypeLikeZone"].String()));
if (!zoneNode["treasureLikeZone"].isNull()) if (!zoneNode["treasureLikeZone"].isNull())
{ {
//TODO: check if the zone with that index exists
for (auto treasureInfo : zones[zoneNode["treasureLikeZone"].Float()]->getTreasureInfo()) for (auto treasureInfo : zones[zoneNode["treasureLikeZone"].Float()]->getTreasureInfo())
{ {
zone->addTreasureInfo(treasureInfo); zone->addTreasureInfo(treasureInfo);
} }
} }
zones[zone->getId()] = zone;
} }
tpl->setZones(zones); tpl->setZones(zones);
// Parse connections // Parse connections