소스 검색

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)