Group keyboard and joypad controls into a submenu
This commit is contained in:
parent
197a475fab
commit
979d32faed
38
SDL/gui.c
38
SDL/gui.c
@ -313,9 +313,10 @@ static void item_help(unsigned index)
|
|||||||
|
|
||||||
static void enter_emulation_menu(unsigned index);
|
static void enter_emulation_menu(unsigned index);
|
||||||
static void enter_graphics_menu(unsigned index);
|
static void enter_graphics_menu(unsigned index);
|
||||||
static void enter_controls_menu(unsigned index);
|
static void enter_keyboard_menu(unsigned index);
|
||||||
static void enter_joypad_menu(unsigned index);
|
static void enter_joypad_menu(unsigned index);
|
||||||
static void enter_audio_menu(unsigned index);
|
static void enter_audio_menu(unsigned index);
|
||||||
|
static void enter_controls_menu(unsigned index);
|
||||||
static void toggle_audio_recording(unsigned index);
|
static void toggle_audio_recording(unsigned index);
|
||||||
|
|
||||||
extern void set_filename(const char *new_filename, typeof(free) *new_free_function);
|
extern void set_filename(const char *new_filename, typeof(free) *new_free_function);
|
||||||
@ -353,8 +354,7 @@ static const struct menu_item paused_menu[] = {
|
|||||||
{"Emulation Options", enter_emulation_menu},
|
{"Emulation Options", enter_emulation_menu},
|
||||||
{"Graphic Options", enter_graphics_menu},
|
{"Graphic Options", enter_graphics_menu},
|
||||||
{"Audio Options", enter_audio_menu},
|
{"Audio Options", enter_audio_menu},
|
||||||
{"Keyboard Options", enter_controls_menu},
|
{"Control Options", enter_controls_menu},
|
||||||
{"Joypad Options", enter_joypad_menu},
|
|
||||||
{audio_recording_menu_item, toggle_audio_recording},
|
{audio_recording_menu_item, toggle_audio_recording},
|
||||||
{"Help", item_help},
|
{"Help", item_help},
|
||||||
{"Quit SameBoy", item_exit},
|
{"Quit SameBoy", item_exit},
|
||||||
@ -940,7 +940,7 @@ static void modify_key(unsigned index)
|
|||||||
|
|
||||||
static const char *key_name(unsigned index);
|
static const char *key_name(unsigned index);
|
||||||
|
|
||||||
static const struct menu_item controls_menu[] = {
|
static const struct menu_item keyboard_menu[] = {
|
||||||
{"Right:", modify_key, key_name,},
|
{"Right:", modify_key, key_name,},
|
||||||
{"Left:", modify_key, key_name,},
|
{"Left:", modify_key, key_name,},
|
||||||
{"Up:", modify_key, key_name,},
|
{"Up:", modify_key, key_name,},
|
||||||
@ -952,7 +952,7 @@ static const struct menu_item controls_menu[] = {
|
|||||||
{"Turbo:", modify_key, key_name,},
|
{"Turbo:", modify_key, key_name,},
|
||||||
{"Rewind:", modify_key, key_name,},
|
{"Rewind:", modify_key, key_name,},
|
||||||
{"Slow-Motion:", modify_key, key_name,},
|
{"Slow-Motion:", modify_key, key_name,},
|
||||||
{"Back", return_to_root_menu},
|
{"Back", enter_controls_menu},
|
||||||
{NULL,}
|
{NULL,}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -964,9 +964,9 @@ static const char *key_name(unsigned index)
|
|||||||
return SDL_GetScancodeName(configuration.keys[index]);
|
return SDL_GetScancodeName(configuration.keys[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void enter_controls_menu(unsigned index)
|
static void enter_keyboard_menu(unsigned index)
|
||||||
{
|
{
|
||||||
current_menu = controls_menu;
|
current_menu = keyboard_menu;
|
||||||
current_selection = 0;
|
current_selection = 0;
|
||||||
scroll = 0;
|
scroll = 0;
|
||||||
recalculate_menu_height();
|
recalculate_menu_height();
|
||||||
@ -1096,7 +1096,7 @@ static const struct menu_item joypad_menu[] = {
|
|||||||
{"Joypad:", cycle_joypads, current_joypad_name, cycle_joypads_backwards},
|
{"Joypad:", cycle_joypads, current_joypad_name, cycle_joypads_backwards},
|
||||||
{"Configure layout", detect_joypad_layout},
|
{"Configure layout", detect_joypad_layout},
|
||||||
{"Rumble Mode:", cycle_rumble_mode, current_rumble_mode, cycle_rumble_mode_backwards},
|
{"Rumble Mode:", cycle_rumble_mode, current_rumble_mode, cycle_rumble_mode_backwards},
|
||||||
{"Back", return_to_root_menu},
|
{"Back", enter_controls_menu},
|
||||||
{NULL,}
|
{NULL,}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1155,6 +1155,21 @@ void connect_joypad(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const struct menu_item controls_menu[] = {
|
||||||
|
{"Keyboard Options", enter_keyboard_menu},
|
||||||
|
{"Joypad Options", enter_joypad_menu},
|
||||||
|
{"Back", return_to_root_menu},
|
||||||
|
{NULL,}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void enter_controls_menu(unsigned index)
|
||||||
|
{
|
||||||
|
current_menu = controls_menu;
|
||||||
|
current_selection = 0;
|
||||||
|
scroll = 0;
|
||||||
|
recalculate_menu_height();
|
||||||
|
}
|
||||||
|
|
||||||
static void toggle_audio_recording(unsigned index)
|
static void toggle_audio_recording(unsigned index)
|
||||||
{
|
{
|
||||||
if (!GB_is_inited(&gb)) {
|
if (!GB_is_inited(&gb)) {
|
||||||
@ -1526,7 +1541,12 @@ void run_gui(bool is_running)
|
|||||||
}
|
}
|
||||||
else if (event.key.keysym.scancode == SDL_SCANCODE_ESCAPE) {
|
else if (event.key.keysym.scancode == SDL_SCANCODE_ESCAPE) {
|
||||||
if (gui_state == SHOWING_MENU && current_menu != root_menu) {
|
if (gui_state == SHOWING_MENU && current_menu != root_menu) {
|
||||||
return_to_root_menu(0);
|
for (const struct menu_item *item = current_menu; item->string; item++) {
|
||||||
|
if (strcmp(item->string, "Back") == 0) {
|
||||||
|
item->handler(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
should_render = true;
|
should_render = true;
|
||||||
}
|
}
|
||||||
else if (is_running) {
|
else if (is_running) {
|
||||||
|
Loading…
Reference in New Issue
Block a user