2023-01-01 02:06:02 +01:00
|
|
|
function button(_onClick, _icon = noone) {
|
|
|
|
return new buttonClass(_onClick, _icon);
|
2022-01-13 05:24:03 +01:00
|
|
|
}
|
|
|
|
|
2023-01-01 02:06:02 +01:00
|
|
|
function buttonClass(_onClick, _icon = noone) constructor {
|
2022-01-13 05:24:03 +01:00
|
|
|
active = false;
|
|
|
|
hover = false;
|
|
|
|
|
2023-01-01 02:06:02 +01:00
|
|
|
icon = _icon;
|
2022-12-16 09:18:09 +01:00
|
|
|
icon_blend = c_white;
|
2022-01-13 05:24:03 +01:00
|
|
|
icon_index = 0;
|
|
|
|
|
|
|
|
text = "";
|
|
|
|
tooltip = "";
|
|
|
|
|
|
|
|
onClick = _onClick;
|
|
|
|
|
2022-12-16 09:18:09 +01:00
|
|
|
static setIcon = function(_icon, _index = 0, _blend = c_white) {
|
|
|
|
icon = _icon;
|
|
|
|
icon_index = _index;
|
|
|
|
icon_blend = _blend;
|
2022-08-30 07:36:37 +02:00
|
|
|
return self;
|
|
|
|
}
|
2022-01-13 05:24:03 +01:00
|
|
|
|
2022-08-30 07:36:37 +02:00
|
|
|
static setText = function(_text) {
|
|
|
|
text = _text;
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
|
|
|
static setTooltip = function(_tip) {
|
|
|
|
tooltip = _tip;
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
2022-11-18 03:20:31 +01:00
|
|
|
static draw = function(_x, _y, _w, _h, _m, spr = THEME.button, blend = c_white) {
|
2022-01-13 05:24:03 +01:00
|
|
|
var click = false;
|
|
|
|
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) {
|
2022-08-30 07:36:37 +02:00
|
|
|
draw_sprite_stretched_ext(spr, 1, _x, _y, _w, _h, blend, 1);
|
2022-12-10 05:06:01 +01:00
|
|
|
if(mouse_press(mb_left, active)) {
|
2022-01-13 05:24:03 +01:00
|
|
|
if(onClick) onClick();
|
|
|
|
click = true;
|
|
|
|
}
|
2022-12-10 05:06:01 +01:00
|
|
|
if(mouse_click(mb_left, active))
|
2022-08-30 07:36:37 +02:00
|
|
|
draw_sprite_stretched_ext(spr, 2, _x, _y, _w, _h, blend, 1);
|
2022-01-13 05:24:03 +01:00
|
|
|
if(tooltip != "") TOOLTIP = tooltip;
|
|
|
|
} else {
|
2022-08-30 07:36:37 +02:00
|
|
|
draw_sprite_stretched_ext(spr, 0, _x, _y, _w, _h, blend, 1);
|
2022-01-13 05:24:03 +01:00
|
|
|
}
|
2022-12-16 09:18:09 +01:00
|
|
|
if(icon) draw_sprite_ui_uniform(icon, icon_index, _x + _w / 2, _y + _h / 2,, icon_blend);
|
2022-01-13 05:24:03 +01:00
|
|
|
if(text != "") {
|
2022-11-18 03:20:31 +01:00
|
|
|
draw_set_text(f_p0, fa_center, fa_center, COLORS._main_text);
|
2022-01-13 05:24:03 +01:00
|
|
|
draw_text(_x + _w / 2, _y + _h / 2, text);
|
|
|
|
}
|
|
|
|
|
|
|
|
hover = false;
|
|
|
|
active = false;
|
|
|
|
|
|
|
|
return click;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-11-18 03:20:31 +01:00
|
|
|
function buttonInstant(spr, _x, _y, _w, _h, _m, _act, _hvr, _tip = "", _icon = noone, _icon_index = 0, _icon_blend = COLORS._main_icon, _icon_alpha = 1) {
|
2022-01-13 05:24:03 +01:00
|
|
|
var res = 0;
|
|
|
|
|
|
|
|
if(_hvr && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) {
|
|
|
|
res = 1;
|
|
|
|
draw_sprite_stretched(spr, 1, _x, _y, _w, _h);
|
|
|
|
if(_tip != "")
|
|
|
|
TOOLTIP = _tip;
|
2022-12-10 05:06:01 +01:00
|
|
|
if(mouse_press(mb_left, _act))
|
2022-01-13 05:24:03 +01:00
|
|
|
res = 2;
|
2022-12-10 05:06:01 +01:00
|
|
|
if(mouse_click(mb_left, _act))
|
2022-01-13 05:24:03 +01:00
|
|
|
draw_sprite_stretched(spr, 2, _x, _y, _w, _h);
|
|
|
|
} else {
|
|
|
|
draw_sprite_stretched(spr, 0, _x, _y, _w, _h);
|
|
|
|
}
|
|
|
|
|
|
|
|
if(_icon) {
|
2022-11-03 11:44:49 +01:00
|
|
|
draw_sprite_ui_uniform(_icon, _icon_index, _x + _w / 2, _y + _h / 2, 1, _icon_blend, _icon_alpha);
|
2022-01-13 05:24:03 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return res;
|
|
|
|
}
|