The open source repository for the action RPG game in development by Sig Productions titled 'Adventures in Lestoria'! https://forums.lestoria.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AdventuresInLestoria/Crawler/MenuAnimatedIconButton.h

27 lines
1.1 KiB

#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,bool selectable=true)
:MenuIconButton(parent,rect,nullptr,onClick,selectable),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);
}
};