#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::rectrect,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>(attribute)|static_cast>(attribute2)); } constexpr auto operator&(IconButtonAttr attribute,IconButtonAttr attribute2) noexcept { return static_cast>(attribute)&static_cast>(attribute2); }