瀏覽代碼

Fix broken grandmaster ability description updating on select/deselect

Dydzio 2 年之前
父節點
當前提交
2769782d0a
共有 2 個文件被更改,包括 14 次插入2 次删除
  1. 13 2
      client/windows/CCreatureWindow.cpp
  2. 1 0
      client/windows/CCreatureWindow.h

+ 13 - 2
client/windows/CCreatureWindow.cpp

@@ -128,6 +128,11 @@ void CCommanderSkillIcon::deselect()
 	isSelected = false;
 }
 
+bool CCommanderSkillIcon::getIsGrandmasterAbility()
+{
+	return isGrandmasterAbility;
+}
+
 void CCommanderSkillIcon::show(Canvas &to)
 {
 	CIntObject::show(to);
@@ -915,7 +920,10 @@ void CStackWindow::setSelection(si32 newSkill, std::shared_ptr<CCommanderSkillIc
 
 	if(selectedIcon)
 	{
-		selectedIcon->text = getSkillDescription(oldSelection, false); //update previously selected icon's message to existing skill level
+		if(!selectedIcon->getIsGrandmasterAbility()) //unlike WoG, in VCMI grandmaster skill descriptions are taken from bonus descriptions
+		{
+			selectedIcon->text = getSkillDescription(oldSelection, false); //update previously selected icon's message to existing skill level
+		}
 		selectedIcon->deselect();
 	}
 
@@ -923,7 +931,10 @@ void CStackWindow::setSelection(si32 newSkill, std::shared_ptr<CCommanderSkillIc
 	if(newSkill < 100)
 	{
 		newIcon->setObject(std::make_shared<CPicture>(getSkillImage(newSkill)));
-		newIcon->text = getSkillDescription(newSkill, true); //update currently selected icon's message to show upgrade description
+		if(!newIcon->getIsGrandmasterAbility())
+		{
+			newIcon->text = getSkillDescription(newSkill, true); //update currently selected icon's message to show upgrade description
+		}
 	}
 }
 

+ 1 - 0
client/windows/CCreatureWindow.h

@@ -43,6 +43,7 @@ public:
 
 	void setObject(std::shared_ptr<CIntObject> object);
 	void deselect(); //TODO: consider using observer pattern instead?
+	bool getIsGrandmasterAbility();
 
 	void show(Canvas &to) override;
 };