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.
 
 
 
 
 
 

52 lines
1.3 KiB

#pragma once
#include "DiabloUI/art.h"
#include "DiabloUI/ui_item.h"
namespace dvl {
extern Art SmlButton;
void LoadSmlButtonArt();
inline void UnloadSmlButtonArt()
{
SmlButton.Unload();
}
constexpr decltype(SDL_Rect().w) SML_BUTTON_WIDTH = 110;
constexpr decltype(SDL_Rect().h) SML_BUTTON_HEIGHT = 28;
enum class ButtonFrame {
BG_GOLD = 0,
BG_GOLD_PRESSED,
BG_YELLOW,
BG_YELLOW_PRESSED,
DISABLED,
};
constexpr UiButton::FrameMap ButtonBgYellowFrameMap = {
static_cast<int>(ButtonFrame::BG_YELLOW),
static_cast<int>(ButtonFrame::BG_YELLOW_PRESSED),
static_cast<int>(ButtonFrame::DISABLED),
};
constexpr UiButton::FrameMap ButtonBgGoldFrameMap = {
static_cast<int>(ButtonFrame::BG_GOLD),
static_cast<int>(ButtonFrame::BG_GOLD_PRESSED),
static_cast<int>(ButtonFrame::DISABLED),
};
constexpr UiButton MakeSmlButton(
const char *text, void (*action)(), decltype(SDL_Rect().x) x, decltype(SDL_Rect().y) y, int flags = 0)
{
return UiButton(
&SmlButton,
(flags & UIS_GOLD) ? ButtonBgGoldFrameMap : ButtonBgYellowFrameMap,
text,
action,
SDL_Rect{ x, y, SML_BUTTON_WIDTH, SML_BUTTON_HEIGHT },
flags);
}
void RenderButton(UiButton *button);
bool HandleMouseEventButton(const SDL_Event &event, UiButton *button);
void HandleGlobalMouseUpButton(UiButton *button);
} // namespace dvl