From b6dd4460de1e1c216f68a71061573009dc63c6dc Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sun, 23 Feb 2025 14:46:04 +0000 Subject: [PATCH] Fix Brotherhood displaying Thieves Guild UI on click instead of Tavern --- client/windows/CCastleInterface.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/client/windows/CCastleInterface.cpp b/client/windows/CCastleInterface.cpp index 35ef4b519..7eaf847b9 100644 --- a/client/windows/CCastleInterface.cpp +++ b/client/windows/CCastleInterface.cpp @@ -814,22 +814,26 @@ const CGHeroInstance * CCastleBuildings::getHero() void CCastleBuildings::buildingClicked(BuildingID building) { - BuildingID buildingToEnter = building; - for(;;) + std::vector 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)