Pixel-Composer/scripts/checkbox/checkbox.gml

46 lines
1.2 KiB
Text
Raw Normal View History

2023-01-17 14:11:55 +07:00
function checkBox(_onClick) : widget() constructor {
2022-01-13 11:24:03 +07:00
onClick = _onClick;
2023-03-05 13:16:44 +07:00
spr = THEME.checkbox;
2022-01-13 11:24:03 +07:00
2023-01-17 14:11:55 +07:00
static trigger = function() {
if(!onClick) return;
onClick();
}
2022-11-03 17:44:49 +07:00
static draw = function(_x, _y, _value, _m, ss = ui(28), halign = fa_left, valign = fa_top) {
2023-01-17 14:11:55 +07:00
x = _x;
y = _y;
w = ss;
h = ss;
2022-12-19 19:35:30 +07:00
var _dx, _dy;
2022-11-03 17:44:49 +07:00
switch(halign) {
2022-12-19 19:35:30 +07:00
case fa_left: _dx = _x; break;
case fa_center: _dx = _x - ss / 2; break;
case fa_right: _dx = _x - ss; break;
2022-11-03 17:44:49 +07:00
}
switch(valign) {
2022-12-19 19:35:30 +07:00
case fa_top: _dy = _y; break;
case fa_center: _dy = _y - ss / 2; break;
case fa_bottom: _dy = _y - ss; break;
2022-11-03 17:44:49 +07:00
}
2022-01-13 11:24:03 +07:00
2023-01-25 12:49:00 +07:00
var aa = interactable * 0.25 + 0.75;
2023-03-05 13:16:44 +07:00
draw_sprite_stretched_ext(spr, _value * 2, _dx, _dy, ss, ss, c_white, aa);
2022-01-13 11:24:03 +07:00
2022-12-19 19:35:30 +07:00
if(hover && point_in_rectangle(_m[0], _m[1], _dx, _dy, _dx + ss, _dy + ss)) {
2023-03-05 13:16:44 +07:00
draw_sprite_stretched_ext(spr, _value * 2 + 1, _dx, _dy, ss, ss, c_white, aa);
2022-01-13 11:24:03 +07:00
2022-12-19 19:35:30 +07:00
if(mouse_press(mb_left, active))
2023-01-17 14:11:55 +07:00
trigger();
} else
if(mouse_press(mb_left)) deactivate();
if(WIDGET_CURRENT == self)
draw_sprite_stretched(THEME.widget_selecting, 0, _dx - ui(3), _dy - ui(3), ss + ui(6), ss + ui(6));
2022-01-13 11:24:03 +07:00
2023-01-17 14:11:55 +07:00
resetFocus();
2022-01-13 11:24:03 +07:00
}
}