瀏覽代碼

CPlayerInterface::buildChanged: fix update of advInt townlist

Fix issue when town icon on adventure interface is not updated from village after vcmiarmenelos cheat used.
This didn't occur during normal gameplay since usually castleInt is active when you build something.
Arseniy Shestakov 9 年之前
父節點
當前提交
f020fa06fd
共有 1 個文件被更改,包括 16 次插入13 次删除
  1. 16 13
      client/CPlayerInterface.cpp

+ 16 - 13
client/CPlayerInterface.cpp

@@ -612,22 +612,25 @@ void CPlayerInterface::buildChanged(const CGTownInstance *town, BuildingID build
 		break;
 	}
 
-	if(!castleInt)
-		return;
-	if(castleInt->town!=town)
-		return;
-	switch(what)
+	if(castleInt)
 	{
-	case 1:
-		CCS->soundh->playSound(soundBase::newBuilding);
-		castleInt->addBuilding(buildingID);
-		break;
-	case 2:
-		castleInt->removeBuilding(buildingID);
-		break;
+		castleInt->townlist->update(town);
+
+		if(castleInt->town == town)
+		{
+			switch(what)
+			{
+			case 1:
+				CCS->soundh->playSound(soundBase::newBuilding);
+				castleInt->addBuilding(buildingID);
+				break;
+			case 2:
+				castleInt->removeBuilding(buildingID);
+				break;
+			}
+		}
 	}
 	adventureInt->townList.update(town);
-	castleInt->townlist->update(town);
 }
 
 void CPlayerInterface::battleStartBefore(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2)