port: add mouse controls to sliders

This commit is contained in:
fgsfds committed 2024-05-14 23:16:36 +02:00
1 parent da8b9be09d
commit a6e7d503e6
1 file changed
+28
+28
View File
@@ -2454,6 +2454,34 @@ bool menuitemSliderTick(struct menuitem *item, struct menudialog *dialog, struct
f32 f14;
if ((tickflags & MENUTICKFLAG_ITEMISFOCUSED)) {
#ifndef PLATFORM_N64
if (g_MenuUsingMouse && inputs->select) {
// handle mouse
struct menudialog *dialog = g_Menus[g_MpPlayerNum].curdialog;
if (dialog) {
const s32 left = dialog->x + dialog->width - 82;
const s32 right = dialog->x + dialog->width - 7;
const s32 size = right - left;
const s32 delta = inputs->mousex - left;
if (delta >= -8 && delta <= size + 8) {
index = (delta / (f32)size) * item->param3;
if (index < 0) {
index = 0;
}
if (index > item->param3) {
index = item->param3;
}
if (item->handler) {
item->handler(MENUOP_GET, item, &handlerdata);
handlerdata.slider.value = index;
item->handler(MENUOP_SET, item, &handlerdata);
}
return true;
}
}
}
#endif
if (tickflags & MENUTICKFLAG_DIALOGISDIMMED) {
if (item->handler) {
item->handler(MENUOP_GETSLIDER, item, &handlerdata);