Răsfoiți Sursa

SpellArea tweak

AlexVinS 9 ani în urmă
părinte
comite
e1f9b2c74a
2 a modificat fișierele cu 10 adăugiri și 6 ștergeri
  1. 8 6
      client/windows/CSpellWindow.cpp
  2. 2 0
      client/windows/CSpellWindow.h

+ 8 - 6
client/windows/CSpellWindow.cpp

@@ -595,6 +595,7 @@ CSpellWindow::SpellArea::SpellArea(SDL_Rect pos, CSpellWindow * owner)
 
 	spellCost = whichSchool = schoolLevel = -1;
 	mySpell = nullptr;
+	icon = nullptr;
 }
 
 void CSpellWindow::SpellArea::clickLeft(tribool down, bool previousState)
@@ -855,14 +856,8 @@ void CSpellWindow::SpellArea::showAll(SDL_Surface * to)
 	if(!mySpell)
 		return;
 
-	owner->spells->load(mySpell->id);
-
-	IImage * icon = owner->spells->getImage(mySpell->id,0,false);
-
 	if(icon != nullptr)
 		icon->draw(to, pos.x, pos.y);
-	else
-		logGlobal->errorStream() << __FUNCTION__ << ": failed to load icon for spell " << mySpell->name;
 
 	blitAt(owner->schoolBorders[owner->selectedTab >= 4 ? whichSchool : owner->selectedTab]->ourImages[schoolLevel].bitmap, pos.x, pos.y, to); //printing border (indicates level of magic school)
 
@@ -898,10 +893,17 @@ void CSpellWindow::SpellArea::showAll(SDL_Surface * to)
 
 void CSpellWindow::SpellArea::setSpell(const CSpell * spell)
 {
+	icon = nullptr;
 	mySpell = spell;
 	if(mySpell)
 	{
 		schoolLevel = owner->myHero->getSpellSchoolLevel(mySpell, &whichSchool);
 		spellCost = owner->myInt->cb->getSpellCost(mySpell, owner->myHero);
+
+		owner->spells->load(mySpell->id);
+		icon = owner->spells->getImage(mySpell->id, 0, false);
+
+		if(icon == nullptr)
+			logGlobal->errorStream() << "Failed to load icon for spell " << mySpell->name;
 	}
 }

+ 2 - 0
client/windows/CSpellWindow.h

@@ -15,6 +15,7 @@
 struct SDL_Surface;
 class CDefHandler;
 struct SDL_Rect;
+class IImage;
 class CGHeroInstance;
 class CGStatusBar;
 class CPlayerInterface;
@@ -33,6 +34,7 @@ private:
 		int whichSchool; //0 - air magic, 1 - fire magic, 2 - water magic, 3 - earth magic,
 		int spellCost;
 		CSpellWindow * owner;
+		IImage * icon;
 
 		SpellArea(SDL_Rect pos, CSpellWindow * owner);