Browse Source

Merge pull request #5467 from IvanSavenko/brotherhood_fix

[1.6.7] Fix Brotherhood displaying Thieves Guild UI on click instead of Tavern
Ivan Savenko 7 months ago
parent
commit
e2e83b392b
1 changed files with 13 additions and 9 deletions
  1. 13 9
      client/windows/CCastleInterface.cpp

+ 13 - 9
client/windows/CCastleInterface.cpp

@@ -814,22 +814,26 @@ const CGHeroInstance * CCastleBuildings::getHero()
 
 void CCastleBuildings::buildingClicked(BuildingID building)
 {
-	BuildingID buildingToEnter = building;
-	for(;;)
+	std::vector<BuildingID> buildingsToTest;
+
+	for(BuildingID buildingToEnter = building;;)
 	{
 		const CBuilding *b = town->getTown()->buildings.find(buildingToEnter)->second;
 
-		if (buildingTryActivateCustomUI(buildingToEnter, building))
-			return;
-
+		buildingsToTest.push_back(buildingToEnter);
 		if (!b->upgrade.hasValue())
-		{
-			enterBuilding(building);
-			return;
-		}
+			break;
 
 		buildingToEnter = b->upgrade;
 	}
+
+	for(BuildingID buildingToEnter : boost::adaptors::reverse(buildingsToTest))
+	{
+		if (buildingTryActivateCustomUI(buildingToEnter, building))
+			return;
+	}
+
+	enterBuilding(building);
 }
 
 bool CCastleBuildings::buildingTryActivateCustomUI(BuildingID buildingToTest, BuildingID buildingTarget)