1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-26 03:52:01 +02:00

Use CAnimImage for SpellArea

This commit is contained in:
AlexVinS 2016-10-16 13:22:07 +03:00
parent 3a52a3c663
commit 2a6bab119b
2 changed files with 11 additions and 16 deletions

View File

@ -519,13 +519,15 @@ CSpellWindow::SpellArea::SpellArea(SDL_Rect pos, CSpellWindow * owner)
spellCost = whichSchool = schoolLevel = -1;
mySpell = nullptr;
icon = nullptr;
OBJ_CONSTRUCTION_CAPTURING_ALL;
image = new CAnimImage(owner->spells, 0, 0);
image->visible = false;
}
CSpellWindow::SpellArea::~SpellArea()
{
if(icon)
icon->decreaseRef();
}
void CSpellWindow::SpellArea::clickLeft(tribool down, bool previousState)
@ -785,9 +787,7 @@ void CSpellWindow::SpellArea::showAll(SDL_Surface * to)
{
if(!mySpell)
return;
if(icon != nullptr)
icon->draw(to, pos.x, pos.y);
CIntObject::showAll(to);
blitAt(owner->schoolBorders[owner->selectedTab >= 4 ? whichSchool : owner->selectedTab]->ourImages[schoolLevel].bitmap, pos.x, pos.y, to); //printing border (indicates level of magic school)
@ -823,19 +823,14 @@ void CSpellWindow::SpellArea::showAll(SDL_Surface * to)
void CSpellWindow::SpellArea::setSpell(const CSpell * spell)
{
if(icon)
icon->decreaseRef();
icon = nullptr;
image->visible = false;
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;
image->setFrame(mySpell->id);
image->visible = true;
}
}

View File

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