瀏覽代碼

Fix loading of spell immunity icons for corresponding bonus

Ivan Savenko 6 月之前
父節點
當前提交
e51ba74214
共有 3 個文件被更改,包括 10 次插入4 次删除
  1. 6 0
      lib/CBonusTypeHandler.cpp
  2. 2 2
      lib/spells/CSpellHandler.cpp
  3. 2 2
      lib/spells/CSpellHandler.h

+ 6 - 0
lib/CBonusTypeHandler.cpp

@@ -96,6 +96,12 @@ ImagePath CBonusTypeHandler::bonusToGraphics(const std::shared_ptr<Bonus> & bonu
 {
 	const CBonusType & bt = bonusTypes[vstd::to_underlying(bonus->type)];
 
+	if (bonus->type == BonusType::SPELL_IMMUNITY && bonus->subtype.as<SpellID>().hasValue())
+	{
+		const CSpell * sp = bonus->subtype.as<SpellID>().toSpell();
+		return sp->getIconImmune();
+	}
+
 	if (bt.subtypeIcons.count(bonus->subtype.getNum()))
 		return bt.subtypeIcons.at(bonus->subtype.getNum());
 

+ 2 - 2
lib/spells/CSpellHandler.cpp

@@ -310,7 +310,7 @@ bool CSpell::canCastWithoutSkip() const
 	return castWithoutSkip;
 }
 
-const std::string & CSpell::getIconImmune() const
+const ImagePath & CSpell::getIconImmune() const
 {
 	return iconImmune;
 }
@@ -948,7 +948,7 @@ std::shared_ptr<CSpell> CSpellHandler::loadFromJson(const std::string & scope, c
 
 	const JsonNode & graphicsNode = json["graphics"];
 
-	spell->iconImmune = graphicsNode["iconImmune"].String();
+	spell->iconImmune = ImagePath::fromJson(graphicsNode["iconImmune"]);
 	spell->iconBook = graphicsNode["iconBook"].String();
 	spell->iconEffect = graphicsNode["iconEffect"].String();
 	spell->iconScenarioBonus = graphicsNode["iconScenarioBonus"].String();

+ 2 - 2
lib/spells/CSpellHandler.h

@@ -221,7 +221,7 @@ public:
 
 	void registerIcons(const IconRegistar & cb) const override;
 
-	const std::string & getIconImmune() const; ///< Returns resource name of icon for SPELL_IMMUNITY bonus
+	const ImagePath & getIconImmune() const; ///< Returns resource name of icon for SPELL_IMMUNITY bonus
 	const std::string & getIconBook() const;
 	const std::string & getIconEffect() const;
 	const std::string & getIconScenarioBonus() const;
@@ -280,7 +280,7 @@ private:
 	spells::AimType targetType;
 
 	///graphics related stuff
-	std::string iconImmune;
+	ImagePath iconImmune;
 	std::string iconBook;
 	std::string iconEffect;
 	std::string iconScenarioBonus;