Browse Source

seperate image for each mage guild level possible

Laserlicht 4 months ago
parent
commit
21db022547

+ 10 - 3
client/windows/CCastleInterface.cpp

@@ -1194,7 +1194,10 @@ void CCastleBuildings::enterTownHall()
 void CCastleBuildings::openMagesGuild()
 {
 	auto mageGuildBackground = GAME->interface()->castleInt->town->getTown()->clientInfo.guildBackground;
-	ENGINE->windows().createAndPushWindow<CMageGuildScreen>(GAME->interface()->castleInt, mageGuildBackground);
+	assert(mageGuildBackground.size() == 1 || mageGuildBackground.size() == GAME->interface()->castleInt->town->getTown()->mageLevel);
+	auto selectedMageGuildBackground = mageGuildBackground.size() == 1 ? mageGuildBackground[0] : mageGuildBackground[town->mageGuildLevel() - 1];
+
+	ENGINE->windows().createAndPushWindow<CMageGuildScreen>(GAME->interface()->castleInt, selectedMageGuildBackground);
 }
 
 void CCastleBuildings::openTownHall()
@@ -2113,7 +2116,11 @@ CMageGuildScreen::CMageGuildScreen(CCastleInterface * owner, const ImagePath & i
 {
 	OBJECT_CONSTRUCTION;
 
-	window = std::make_shared<CPicture>(owner->town->getTown()->clientInfo.guildWindow, 332, 76);
+	auto guildWindow = owner->town->getTown()->clientInfo.guildWindow;
+	assert(guildWindow.size() == 1 || guildWindow.size() == GAME->interface()->castleInt->town->getTown()->mageLevel);
+	auto selectedGuildWindow = guildWindow.size() == 1 ? guildWindow[0] : guildWindow[owner->town->mageGuildLevel() - 1];
+
+	window = std::make_shared<CPicture>(selectedGuildWindow, 332, 76);
 
 	resdatabar = std::make_shared<CMinorResDataBar>();
 	resdatabar->moveBy(pos.topLeft(), true);
@@ -2140,7 +2147,7 @@ void CMageGuildScreen::updateSpells(ObjectInstanceID tID)
 		{Point(48,53),   Point(48,147),  Point(48,241),  Point(48,335),  Point(48,429)},
 		{Point(570,82),  Point(672,82),  Point(570,157), Point(672,157)},
 		{Point(183,42),  Point(183,148), Point(183,253)},
-		{Point(491,325), Point(591,325)}
+		{Point(491,325), Point(591,325)}//
 	};
 
 	spells.clear();

+ 2 - 2
config/factions/castle.json

@@ -122,9 +122,9 @@
 			"musicTheme" : [ "music/CstleTown" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
 			"townBackground": "TBCSBACK.bmp",
-			"guildWindow": "TPMAGECS.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLCSTL.DEF",
 			"hallBackground": "TPTHBKCS.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/conflux.json

@@ -126,9 +126,9 @@
 			"musicTheme" : [ "music/ElemTown" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBELBACK.bmp",
-			"guildWindow": "TPMAGEEL.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLELEM.DEF",
 			"hallBackground": "TPTHBKFR.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/dungeon.json

@@ -122,9 +122,9 @@
 			"musicTheme" : [ "music/Dungeon" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBDNBACK.bmp",
-			"guildWindow": "TPMAGEDN.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLDUNG.DEF",
 			"hallBackground": "TPTHBKDG.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/fortress.json

@@ -122,9 +122,9 @@
 			"musicTheme" : [ "music/FortressTown" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBFRBACK.bmp",
-			"guildWindow": "TPMAGEFR.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLFORT.DEF",
 			"hallBackground": "TPTHBKFR.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/inferno.json

@@ -123,9 +123,9 @@
 			"musicTheme" : [ "music/InfernoTown" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBINBACK.bmp",
-			"guildWindow": "TPMAGEIN.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLINFR.DEF",
 			"hallBackground": "TPTHBKIN.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/necropolis.json

@@ -127,9 +127,9 @@
 			"musicTheme" : [ "music/NecroTown" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBNCBACK.bmp",
-			"guildWindow": "TPMAGENC.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLNECR.DEF",
 			"hallBackground": "TPTHBKNC.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/rampart.json

@@ -126,9 +126,9 @@
 			"musicTheme" : [ "music/Rampart" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBRMBACK.bmp",
-			"guildWindow": "TPMAGERM.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLRAMP.DEF",
 			"hallBackground": "TPTHBKRM.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/stronghold.json

@@ -120,9 +120,9 @@
 			"musicTheme" : [ "music/Stronghold" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBSTBACK.bmp",
-			"guildWindow": "TPMAGEST.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLSTRN.DEF",
 			"hallBackground": "TPTHBKTW.BMP",
 			"hallSlots":

+ 3 - 3
config/factions/tower.json

@@ -121,9 +121,9 @@
 			"musicTheme" : [ "music/TowerTown" ],
 			"defaultTavern" : 5,
 			"tavernVideo" : "TAVERN.BIK",
-			"guildBackground" : "TPMAGE.bmp",
-			"townBackground": "TBTWBACK.bmp",
-			"guildWindow": "TPMAGETW.bmp",
+			"guildBackground" : [ "TPMAGE.bmp" ],
+			"townBackground": "TBCSBACK.bmp",
+			"guildWindow": [ "TPMAGECS.bmp" ],
 			"buildingsIcons": "HALLTOWR.DEF",
 			"hallBackground": "TPTHBKTW.BMP",
 			"hallSlots":

+ 14 - 5
config/schemas/faction.json

@@ -166,13 +166,22 @@
 					"format" : "imageFile"
 				},
 				"guildWindow" : {
-					"type" : "string",
-					"description" : "Image with small view on town from mage guild"
+					"type" : "array",
+					"description" : "Image with small view on town from mage guild (each array element for different mage guild level; if one element only this will be always selected)",
+					"minItems" : 1,
+					"items" : { 
+						"type" : "string",
+						"format" : "imageFile"
+					}
 				},
 				"guildBackground" : {
-					"type" : "string",
-					"description" : "Image with background of mage guild",
-					"format" : "imageFile"
+					"type" : "array",
+					"description" : "Image with background of mage guild (each array element for different mage guild level; if one element only this will be always selected)",
+					"minItems" : 1,
+					"items" : { 
+						"type" : "string",
+						"format" : "imageFile"
+					}
 				},
 				"hallBackground" : {
 					"type" : "string",

+ 2 - 2
lib/entities/faction/CTown.h

@@ -88,8 +88,8 @@ public:
 		VideoPath tavernVideo;
 		std::vector<AudioPath> musicTheme;
 		ImagePath townBackground;
-		ImagePath guildBackground;
-		ImagePath guildWindow;
+		std::vector<ImagePath> guildBackground;
+		std::vector<ImagePath> guildWindow;
 		AnimationPath buildingsIcons;
 		ImagePath hallBackground;
 		/// vector[row][column] = list of buildings in this slot

+ 15 - 3
lib/entities/faction/CTownHandler.cpp

@@ -573,12 +573,24 @@ void CTownHandler::loadClientData(CTown &town, const JsonNode & source) const
 
 	info.hallBackground = ImagePath::fromJson(source["hallBackground"]);
 	info.townBackground = ImagePath::fromJson(source["townBackground"]);
-	info.guildWindow = ImagePath::fromJson(source["guildWindow"]);
 	info.buildingsIcons = AnimationPath::fromJson(source["buildingsIcons"]);
-
-	info.guildBackground = ImagePath::fromJson(source["guildBackground"]);
 	info.tavernVideo = VideoPath::fromJson(source["tavernVideo"]);
 
+	auto loadStringOrVector = [](auto & target, auto & node){
+		if(node.isVector())
+		{
+			target.clear();
+			for(auto & background : node.Vector())
+			{
+				target.push_back(ImagePath::fromJson(background));
+			}
+		}
+		else
+			target = {ImagePath::fromJson(node)};
+	};
+	loadStringOrVector(info.guildBackground, source["guildBackground"]);
+	loadStringOrVector(info.guildWindow, source["guildWindow"]);
+
 	loadTownHall(town,   source["hallSlots"]);
 	loadStructures(town, source["structures"]);
 	loadSiegeScreen(town, source["siege"]);