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.
53 lines
1.2 KiB
53 lines
1.2 KiB
#include "DiabloUI/button.h" |
|
#include "DiabloUI/art_draw.h" |
|
#include "DiabloUI/text_draw.h" |
|
|
|
namespace dvl { |
|
|
|
Art SmlButton; |
|
|
|
void LoadSmlButtonArt() |
|
{ |
|
LoadArt("ui_art\\but_sml.pcx", &SmlButton, 15); |
|
} |
|
|
|
void RenderButton(UiButton *button) |
|
{ |
|
int frame; |
|
if (button->has_flag(UIS_DISABLED)) { |
|
frame = button->frame_map[UiButton::DISABLED]; |
|
} else if (button->pressed) { |
|
frame = button->frame_map[UiButton::PRESSED]; |
|
} else { |
|
frame = button->frame_map[UiButton::DEFAULT]; |
|
} |
|
DrawArt(button->rect.x, button->rect.y, button->art, frame, button->rect.w, button->rect.h); |
|
|
|
SDL_Rect text_rect = button->rect; |
|
if (!button->pressed) --text_rect.y; |
|
DrawTTF(button->text, text_rect, UIS_CENTER, |
|
SDL_Color{ 243, 243, 243, 0 }, SDL_Color{ 0, 0, 0, 0 }, &button->render_cache); |
|
} |
|
|
|
bool HandleMouseEventButton(const SDL_Event &event, UiButton *button) |
|
{ |
|
if (event.button.button != SDL_BUTTON_LEFT) |
|
return false; |
|
switch (event.type) { |
|
case SDL_MOUSEBUTTONUP: |
|
button->action(); |
|
return true; |
|
case SDL_MOUSEBUTTONDOWN: |
|
button->pressed = true; |
|
return true; |
|
default: |
|
return false; |
|
} |
|
} |
|
|
|
void HandleGlobalMouseUpButton(UiButton *button) |
|
{ |
|
button->pressed = false; |
|
} |
|
|
|
} // namespace dvl
|
|
|