99
1010#define ARRAY_LEN (a ) (sizeof ((a)) / sizeof ((a)[0 ]))
1111
12+ namespace mkb
13+ {
14+
15+ extern " C"
16+ {
17+ extern u8 rumble_enabled_bitflag;
18+ }
19+
20+ }
21+
1222namespace menu
1323{
1424
@@ -33,14 +43,40 @@ static void set_practice_tools_enabled(bool enable)
3343 }
3444}
3545
36- static void set_jump_mod_enabled (bool enable) { if (enable) jump::init (); else jump::dest (); }
37-
38- static bool get_rumble_enabled ()
39- {
40- return true ;
41- }
42-
43- static void set_rumble_enabled (bool enable) {}
46+ static Widget rumble_widgets[] = {
47+ {
48+ .type = WidgetType::Checkbox,
49+ .checkbox = {
50+ .label = " Controller 1 Rumble" ,
51+ .get = []() { return static_cast <bool >(mkb::rumble_enabled_bitflag & (1 << 0 )); },
52+ .set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 0 ); },
53+ }
54+ },
55+ {
56+ .type = WidgetType::Checkbox,
57+ .checkbox = {
58+ .label = " Controller 2 Rumble" ,
59+ .get = []() { return static_cast <bool >(mkb::rumble_enabled_bitflag & (1 << 1 )); },
60+ .set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 1 ); },
61+ }
62+ },
63+ {
64+ .type = WidgetType::Checkbox,
65+ .checkbox = {
66+ .label = " Controller 3 Rumble" ,
67+ .get = []() { return static_cast <bool >(mkb::rumble_enabled_bitflag & (1 << 2 )); },
68+ .set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 2 ); },
69+ }
70+ },
71+ {
72+ .type = WidgetType::Checkbox,
73+ .checkbox = {
74+ .label = " Controller 4 Rumble" ,
75+ .get = []() { return static_cast <bool >(mkb::rumble_enabled_bitflag & (1 << 3 )); },
76+ .set = [](bool enable) { mkb::rumble_enabled_bitflag ^= (1 << 3 ); },
77+ }
78+ }
79+ };
4480
4581static Widget help_widgets[] = {
4682 {.type = WidgetType::Header, .header = {" Practice Tools Bindings" }},
@@ -70,12 +106,13 @@ static Widget root_widgets[] = {
70106 },
71107 {
72108 .type = WidgetType::Checkbox,
73- .checkbox = {" Jump Mod " , jump::is_enabled, set_jump_mod_enabled},
74- } ,
75- {
76- . type = WidgetType::Checkbox ,
77- . checkbox = { " Rumble " , get_rumble_enabled, set_rumble_enabled },
109+ .checkbox = {
110+ . label = " Jump Mod " ,
111+ . get = jump::is_enabled,
112+ . set = []( bool enable) { if (enable) jump::init (); else jump::dest (); } ,
113+ },
78114 },
115+ {.type = WidgetType::Menu, .menu = {" Rumble" , rumble_widgets, ARRAY_LEN (rumble_widgets)}},
79116 {.type = WidgetType::Menu, .menu = {" Help" , help_widgets, ARRAY_LEN (help_widgets)}},
80117};
81118
0 commit comments