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/MenuIconButton.h

38 lines
1.3 KiB

#pragma once
#include "MenuComponent.h"
#include "DEFINES.h"
#include "Crawler.h"
INCLUDE_game
enum class IconButtonAttr{
SELECTABLE=0b0,
NOT_SELECTABLE=int(ButtonAttr::UNSELECTABLE),
};
class MenuIconButton:public MenuComponent{
protected:
Decal*icon;
public:
inline MenuIconButton(MenuType parent,geom2d::rect<float>rect,Decal*icon,MenuFunc onClick,IconButtonAttr attributes=IconButtonAttr::SELECTABLE)
:MenuComponent(parent,rect,"",onClick,ButtonAttr(attributes)),icon(icon){}
protected:
virtual inline void Update(Crawler*game)override{
MenuComponent::Update(game);
}
virtual inline void Draw(Crawler*game,vf2d parentPos)override{
MenuComponent::Draw(game,parentPos);
if(icon!=nullptr){
game->DrawSprite(parentPos+rect.middle()-icon->sprite->Size()/2,icon->sprite,1,Sprite::Flip::NONE);
}
}
};
constexpr auto operator|(IconButtonAttr attribute,IconButtonAttr attribute2) noexcept
{
return IconButtonAttr(static_cast<std::underlying_type_t<IconButtonAttr>>(attribute)|static_cast<std::underlying_type_t<IconButtonAttr>>(attribute2));
}
constexpr auto operator&(IconButtonAttr attribute,IconButtonAttr attribute2) noexcept
{
return static_cast<std::underlying_type_t<IconButtonAttr>>(attribute)&static_cast<std::underlying_type_t<IconButtonAttr>>(attribute2);
}