(PS3) Menu stack code can now be split up

This commit is contained in:
Twinaphex 2012-07-30 17:54:11 +02:00
parent d72bc6558a
commit e1e3909034

View File

@ -341,12 +341,14 @@ static void set_setting_label(menu * current_menu, item *items, unsigned current
static void menu_stack_decrement(void) static void menu_stack_decrement(void)
{ {
menuStackindex--; if(menuStackindex > 0)
menuStackindex--;
} }
static void menu_stack_increment(void) menu *menu_stack_get_current_ptr (void)
{ {
menuStackindex++; menu *current_menu = &menuStack[menuStackindex];
return current_menu;
} }
static void menu_stack_refresh (item *items, menu *current_menu) static void menu_stack_refresh (item *items, menu *current_menu)
@ -376,9 +378,16 @@ static void menu_stack_refresh (item *items, menu *current_menu)
} }
} }
static void menu_stack_push(unsigned stack_idx, item *items, unsigned menu_id) static void menu_stack_push(item *items, unsigned menu_id)
{ {
menu *current_menu = &menuStack[stack_idx]; static bool first_push_do_not_increment = true;
if(!first_push_do_not_increment)
menuStackindex++;
else
first_push_do_not_increment = false;
menu *current_menu = menu_stack_get_current_ptr();
switch(menu_id) switch(menu_id)
{ {
@ -1064,8 +1073,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
{ {
if(g_console.emulator_initialized) if(g_console.emulator_initialized)
{ {
menu_stack_increment(); menu_stack_push(items, PRESET_CHOICE);
menu_stack_push(menuStackindex, items, PRESET_CHOICE);
} }
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1074,8 +1082,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_SHADER: case SETTING_SHADER:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, SHADER_CHOICE);
menu_stack_push(menuStackindex, items, SHADER_CHOICE);
set_shader = 0; set_shader = 0;
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1088,8 +1095,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_SHADER_2: case SETTING_SHADER_2:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push( items, SHADER_CHOICE);
menu_stack_push(menuStackindex, items, SHADER_CHOICE);
set_shader = 1; set_shader = 1;
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1372,8 +1378,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_RARCH_DEFAULT_EMU: case SETTING_RARCH_DEFAULT_EMU:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, LIBRETRO_CHOICE);
menu_stack_push(menuStackindex, items, LIBRETRO_CHOICE);
set_libretro_core_as_launch = false; set_libretro_core_as_launch = false;
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1413,8 +1418,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_PATH_DEFAULT_ROM_DIRECTORY: case SETTING_PATH_DEFAULT_ROM_DIRECTORY:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, PATH_DEFAULT_ROM_DIR_CHOICE);
menu_stack_push(menuStackindex, items, PATH_DEFAULT_ROM_DIR_CHOICE);
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1423,8 +1427,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_PATH_SAVESTATES_DIRECTORY: case SETTING_PATH_SAVESTATES_DIRECTORY:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, PATH_SAVESTATES_DIR_CHOICE);
menu_stack_push(menuStackindex, items, PATH_SAVESTATES_DIR_CHOICE);
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1434,8 +1437,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_PATH_SRAM_DIRECTORY: case SETTING_PATH_SRAM_DIRECTORY:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, PATH_SRAM_DIR_CHOICE);
menu_stack_push(menuStackindex, items, PATH_SRAM_DIR_CHOICE);
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1444,8 +1446,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_PATH_CHEATS: case SETTING_PATH_CHEATS:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, PATH_CHEATS_DIR_CHOICE);
menu_stack_push(menuStackindex, items, PATH_CHEATS_DIR_CHOICE);
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1454,8 +1455,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_PATH_SYSTEM: case SETTING_PATH_SYSTEM:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)))
{ {
menu_stack_increment(); menu_stack_push(items, PATH_SYSTEM_DIR_CHOICE);
menu_stack_push(menuStackindex, items, PATH_SYSTEM_DIR_CHOICE);
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
@ -1499,8 +1499,7 @@ static void producesettingentry(menu *current_menu, item *items, unsigned switch
case SETTING_CONTROLS_SCHEME: case SETTING_CONTROLS_SCHEME:
if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))) if((input_st & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)) || (input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)))
{ {
menu_stack_increment(); menu_stack_push(items, INPUT_PRESET_CHOICE);
menu_stack_push(menuStackindex, items, INPUT_PRESET_CHOICE);
} }
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_START))
menu_stack_refresh(items, current_menu); menu_stack_refresh(items, current_menu);
@ -1621,8 +1620,7 @@ static void settings_iterate(menu *current_menu, item *items, settings_action_t
case EMU_VIDEO_MENU: case EMU_VIDEO_MENU:
case EMU_AUDIO_MENU: case EMU_AUDIO_MENU:
case PATH_MENU: case PATH_MENU:
menu_stack_increment(); menu_stack_push(items, current_menu->enum_id + 1);
menu_stack_push(menuStackindex, items, current_menu->enum_id + 1);
break; break;
case CONTROLS_MENU: case CONTROLS_MENU:
default: default:
@ -1688,8 +1686,7 @@ static void menu_romselect_iterate(filebrowser_t *filebrowser, item *items, menu
rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_console.zip_extract_mode, S_DELAY_45); rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_console.zip_extract_mode, S_DELAY_45);
break; break;
case MENU_ROMSELECT_ACTION_GOTO_SETTINGS: case MENU_ROMSELECT_ACTION_GOTO_SETTINGS:
menu_stack_increment(); menu_stack_push(items, GENERAL_VIDEO_MENU);
menu_stack_push(menuStackindex, items, GENERAL_VIDEO_MENU);
break; break;
default: default:
break; break;
@ -1947,18 +1944,12 @@ static void ingame_menu(item *items, menu *current_menu)
break; break;
case MENU_ITEM_RESIZE_MODE: case MENU_ITEM_RESIZE_MODE:
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))
{ menu_stack_push(items, INGAME_MENU_RESIZE);
menu_stack_increment();
menu_stack_push(menuStackindex, items, INGAME_MENU_RESIZE);
}
strlcpy(comment, "Allows you to resize the screen by moving around the two analog sticks.\nPress TRIANGLE to reset to default values, and CIRCLE to go back.", sizeof(comment)); strlcpy(comment, "Allows you to resize the screen by moving around the two analog sticks.\nPress TRIANGLE to reset to default values, and CIRCLE to go back.", sizeof(comment));
break; break;
case MENU_ITEM_SCREENSHOT_MODE: case MENU_ITEM_SCREENSHOT_MODE:
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))
{ menu_stack_push(items, INGAME_MENU_SCREENSHOT);
menu_stack_increment();
menu_stack_push(menuStackindex, items, INGAME_MENU_SCREENSHOT);
}
strlcpy(comment, "Allows you to take a screenshot without any text clutter.\nPress CIRCLE to go back to the in-game menu while in 'Screenshot Mode'.", sizeof(comment)); strlcpy(comment, "Allows you to take a screenshot without any text clutter.\nPress CIRCLE to go back to the in-game menu while in 'Screenshot Mode'.", sizeof(comment));
break; break;
case MENU_ITEM_RETURN_TO_GAME: case MENU_ITEM_RETURN_TO_GAME:
@ -1985,8 +1976,7 @@ static void ingame_menu(item *items, menu *current_menu)
case MENU_ITEM_CHANGE_LIBRETRO: case MENU_ITEM_CHANGE_LIBRETRO:
if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B)) if(input_st & (1 << RETRO_DEVICE_ID_JOYPAD_B))
{ {
menu_stack_increment(); menu_stack_push(items, LIBRETRO_CHOICE);
menu_stack_push(menuStackindex, items, LIBRETRO_CHOICE);
set_libretro_core_as_launch = true; set_libretro_core_as_launch = true;
} }
strlcpy(comment, "Press 'CROSS' to choose a different emulator core.", sizeof(comment)); strlcpy(comment, "Press 'CROSS' to choose a different emulator core.", sizeof(comment));
@ -2105,7 +2095,7 @@ void menu_init (void)
const char *id = info.library_name ? info.library_name : "Unknown"; const char *id = info.library_name ? info.library_name : "Unknown";
snprintf(core_text, sizeof(core_text), "Libretro core: %s %s", id, info.library_version); snprintf(core_text, sizeof(core_text), "Libretro core: %s %s", id, info.library_version);
menu_stack_push(0, menu_items, FILE_BROWSER_MENU); menu_stack_push(menu_items, FILE_BROWSER_MENU);
filebrowser_set_root(&tmpBrowser, "/"); filebrowser_set_root(&tmpBrowser, "/");
} }
@ -2123,15 +2113,12 @@ void menu_loop(void)
gl->block_swap = true; gl->block_swap = true;
if(g_console.ingame_menu_enable) if(g_console.ingame_menu_enable)
{ menu_stack_push(menu_items, INGAME_MENU);
menu_stack_increment();
menu_stack_push(menuStackindex, menu_items, INGAME_MENU);
}
do do
{ {
static bool first_held = false; static bool first_held = false;
menu *current_menu = &menuStack[menuStackindex]; menu *current_menu = menu_stack_get_current_ptr();
state = cell_pad_input_poll_device(0); state = cell_pad_input_poll_device(0);
uint64_t trig_state = state & ~old_state; uint64_t trig_state = state & ~old_state;