|
|
|
#pragma once
|
|
|
|
#include "MenuIconButton.h"
|
|
|
|
#include "DEFINES.h"
|
|
|
|
|
|
|
|
INCLUDE_game
|
|
|
|
INCLUDE_ANIMATION_DATA
|
|
|
|
|
|
|
|
class MenuAnimatedIconButton:public MenuIconButton{
|
|
|
|
protected:
|
|
|
|
std::string animation;
|
|
|
|
private:
|
|
|
|
float animationTime=0;
|
|
|
|
public:
|
|
|
|
inline MenuAnimatedIconButton(MenuType parent,geom2d::rect<float>rect,std::string animation,MenuFunc onClick,IconButtonAttr attributes=IconButtonAttr::SELECTABLE)
|
|
|
|
:MenuIconButton(parent,rect,nullptr,onClick,attributes),animation(animation){}
|
|
|
|
protected:
|
|
|
|
virtual inline void Update(Crawler*game)override{
|
|
|
|
MenuIconButton::Update(game);
|
|
|
|
animationTime+=game->GetElapsedTime();
|
|
|
|
}
|
|
|
|
virtual inline void Draw(Crawler*game,vf2d parentPos)override{
|
|
|
|
MenuComponent::Draw(game,parentPos); //INTENTIONAL! The way we draw animations is different from static images, we skip over MenuIconButton's draw!
|
|
|
|
Sprite*spr=ANIMATION_DATA[animation].GetFrame(animationTime).GetSourceImage()->Sprite();
|
|
|
|
geom2d::rect<int>sprRect=ANIMATION_DATA[animation].GetFrame(animationTime).GetSourceRect();
|
|
|
|
game->DrawPartialSprite(parentPos+rect.middle()-sprRect.size/2,spr,sprRect.pos,sprRect.size,1,Sprite::Flip::NONE);
|
|
|
|
}
|
|
|
|
};
|