mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-02 23:07:36 +02:00
Extracted common properties of buildings into a shared file
This commit is contained in:
parent
2a54de7569
commit
57430c101f
41
config/buildingsLibrary.json
Normal file
41
config/buildingsLibrary.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"shipyard": { "id" : 6 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
|
||||
"villageHall": {
|
||||
"id" : 10,
|
||||
"mode" : "auto",
|
||||
"produce": { "gold": 500 }
|
||||
},
|
||||
|
||||
"townHall": {
|
||||
"id" : 11,
|
||||
"upgrades" : "villageHall",
|
||||
"requires" : [ "tavern" ],
|
||||
"produce": { "gold": 1000 }
|
||||
},
|
||||
"cityHall": {
|
||||
"id" : 12,
|
||||
"upgrades" : "townHall",
|
||||
"requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ],
|
||||
"produce": { "gold": 2000 }
|
||||
},
|
||||
"capitol": {
|
||||
"id" : 13,
|
||||
"upgrades" : "cityHall",
|
||||
"requires" : [ "castle" ],
|
||||
"produce": { "gold": 4000 }
|
||||
},
|
||||
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ] },
|
||||
"blacksmith": { "id" : 16 }
|
||||
}
|
@ -153,22 +153,22 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"tavern": { "id" : 5 },
|
||||
"shipyard": { "id" : 6 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "ore": 1, "wood": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"tavern": { },
|
||||
"shipyard": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "ore": 1, "wood": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "type" : "lighthouse", "requires" : [ "shipyard" ] },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl3" },
|
||||
|
@ -157,23 +157,23 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"shipyard": { "id" : 6 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "mercury": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"mageGuild5": { },
|
||||
"tavern": { },
|
||||
"shipyard": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "mercury": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "type" : "artifactMerchant", "requires" : [ "marketplace" ] },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" },
|
||||
|
@ -154,22 +154,22 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ] },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"mageGuild5": { },
|
||||
"tavern": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "sulfur": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "type" : "artifactMerchant", "requires" : [ "marketplace" ] },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" },
|
||||
|
@ -153,21 +153,21 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"tavern": { "id" : 5 },
|
||||
"shipyard": { "id" : 6 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "wood": 1, "ore": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"tavern": { },
|
||||
"shipyard": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "wood": 1, "ore": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": {
|
||||
"type" : "configurable",
|
||||
|
@ -154,22 +154,22 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "mercury": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"mageGuild5": { },
|
||||
"tavern": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "mercury": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" },
|
||||
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" },
|
||||
|
@ -158,23 +158,23 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"shipyard": { "id" : 6 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "ore": 1, "wood": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"mageGuild5": { },
|
||||
"tavern": { },
|
||||
"shipyard": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "ore": 1, "wood": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "requires" : [ "fort" ], "bonuses": [ { "type": "DARKNESS", "val": 20 } ] },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1", "requires" : [ "special3" ] },
|
||||
|
@ -157,22 +157,22 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "crystal": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"mageGuild5": { },
|
||||
"tavern": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "crystal": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "type" : "mysticPond" },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl2" },
|
||||
|
@ -151,20 +151,20 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"tavern": { "id" : 5 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce": { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce": { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce": { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce": { "ore": 1, "wood": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"tavern": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce": { "ore": 1, "wood": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "type" : "escapeTunnel", "requires" : [ "fort" ] },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" },
|
||||
|
@ -152,22 +152,22 @@
|
||||
|
||||
"buildings" :
|
||||
{
|
||||
"mageGuild1": { "id" : 0 },
|
||||
"mageGuild2": { "id" : 1, "upgrades" : "mageGuild1" },
|
||||
"mageGuild3": { "id" : 2, "upgrades" : "mageGuild2" },
|
||||
"mageGuild4": { "id" : 3, "upgrades" : "mageGuild3" },
|
||||
"mageGuild5": { "id" : 4, "upgrades" : "mageGuild4" },
|
||||
"tavern": { "id" : 5 },
|
||||
"fort": { "id" : 7 },
|
||||
"citadel": { "id" : 8, "upgrades" : "fort" },
|
||||
"castle": { "id" : 9, "upgrades" : "citadel" },
|
||||
"villageHall": { "id" : 10, "mode" : "auto", "produce" : { "gold": 500 } },
|
||||
"townHall": { "id" : 11, "upgrades" : "villageHall", "requires" : [ "tavern" ], "produce" : { "gold": 1000 } },
|
||||
"cityHall": { "id" : 12, "upgrades" : "townHall", "requires" : [ "allOf", [ "mageGuild1" ], [ "marketplace" ], [ "blacksmith" ] ], "produce": { "gold": 2000 } },
|
||||
"capitol": { "id" : 13, "upgrades" : "cityHall", "requires" : [ "castle" ], "produce" : { "gold": 4000 } },
|
||||
"marketplace": { "id" : 14 },
|
||||
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ], "produce" : { "gems": 1 } },
|
||||
"blacksmith": { "id" : 16 },
|
||||
"mageGuild1": { },
|
||||
"mageGuild2": { },
|
||||
"mageGuild3": { },
|
||||
"mageGuild4": { },
|
||||
"mageGuild5": { },
|
||||
"tavern": { },
|
||||
"fort": { },
|
||||
"citadel": { },
|
||||
"castle": { },
|
||||
"villageHall": { },
|
||||
"townHall": { },
|
||||
"cityHall": { },
|
||||
"capitol": { },
|
||||
"marketplace": { },
|
||||
"resourceSilo": { "produce" : { "gems": 1 } },
|
||||
"blacksmith": { },
|
||||
|
||||
"special1": { "type" : "artifactMerchant", "requires" : [ "marketplace" ] },
|
||||
"horde1": { "id" : 18, "upgrades" : "dwellingLvl2" },
|
||||
|
@ -30,14 +30,16 @@
|
||||
#include "../../texts/CGeneralTextHandler.h"
|
||||
#include "../../texts/CLegacyConfigParser.h"
|
||||
#include "../../json/JsonBonus.h"
|
||||
#include "../../json/JsonUtils.h"
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
const int NAMES_PER_TOWN=16; // number of town names per faction in H3 files. Json can define any number
|
||||
|
||||
CTownHandler::CTownHandler():
|
||||
randomTown(new CTown()),
|
||||
randomFaction(new CFaction())
|
||||
CTownHandler::CTownHandler()
|
||||
: buildingsLibrary(JsonPath::builtin("config/buildingsLibrary"))
|
||||
, randomTown(new CTown())
|
||||
, randomFaction(new CFaction())
|
||||
{
|
||||
randomFaction->town = randomTown;
|
||||
randomTown->faction = randomFaction;
|
||||
@ -895,6 +897,29 @@ void CTownHandler::loadCustom()
|
||||
loadRandomFaction();
|
||||
}
|
||||
|
||||
void CTownHandler::beforeValidate(JsonNode & object)
|
||||
{
|
||||
if (object.Struct().count("town") == 0)
|
||||
return;
|
||||
|
||||
const auto & inheritBuilding = [this](const std::string & name, JsonNode & target)
|
||||
{
|
||||
if (buildingsLibrary.Struct().count(name) == 0)
|
||||
return;
|
||||
|
||||
JsonNode baseCopy(buildingsLibrary[name]);
|
||||
baseCopy.setModScope(target.getModScope());
|
||||
JsonUtils::inherit(target, baseCopy);
|
||||
};
|
||||
|
||||
for (auto & building : object["town"]["buildings"].Struct())
|
||||
{
|
||||
inheritBuilding(building.first, building.second);
|
||||
if (building.second.Struct().count("type"))
|
||||
inheritBuilding(building.second["type"].String(), building.second);
|
||||
}
|
||||
}
|
||||
|
||||
void CTownHandler::afterLoadFinalization()
|
||||
{
|
||||
initializeRequirements();
|
||||
|
@ -25,6 +25,8 @@ class CTown;
|
||||
|
||||
class DLL_LINKAGE CTownHandler : public CHandlerBase<FactionID, Faction, CFaction, FactionService>
|
||||
{
|
||||
JsonNode buildingsLibrary;
|
||||
|
||||
struct BuildingRequirementsHelper
|
||||
{
|
||||
JsonNode json;
|
||||
@ -82,6 +84,7 @@ public:
|
||||
|
||||
void loadCustom() override;
|
||||
void afterLoadFinalization() override;
|
||||
void beforeValidate(JsonNode & object) override;
|
||||
|
||||
std::set<FactionID> getDefaultAllowed() const;
|
||||
std::set<FactionID> getAllowedFactions(bool withTown = true) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user