From 17ea68b9cd16fa27f73a71a6f565661b5d2777e1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 9 May 2013 20:07:12 +0200 Subject: [PATCH] (RMenu XUI) Implement more options in main menu --- frontend/menu/rmenu_xui.cpp | 182 +++++++++++++++++------------------- frontend/menu/rmenu_xui.h | 4 +- 2 files changed, 86 insertions(+), 100 deletions(-) diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index f7247beaec..413a0981dd 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -35,15 +35,9 @@ #include "../../general.h" enum { - MENU_XUI_ITEM_LOAD_STATE = 0, - MENU_XUI_ITEM_SAVE_STATE, - MENU_XUI_ITEM_ASPECT_RATIO, + MENU_XUI_ITEM_ASPECT_RATIO = 0, MENU_XUI_ITEM_ORIENTATION, MENU_XUI_ITEM_RESIZE_MODE, - MENU_XUI_ITEM_FRAME_ADVANCE, - MENU_XUI_ITEM_RESET, - MENU_XUI_ITEM_RETURN_TO_GAME, - MENU_XUI_ITEM_QUIT_RARCH, }; enum @@ -745,20 +739,14 @@ static void init_menulist(unsigned menu_id) } break; case INGAME_MENU_SETTINGS_MODE: - XuiListInsertItems(m_menulist, 0, 1); - XuiListSetText(m_menulist, SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); - XuiListInsertItems(m_menulist, 1, 1); - XuiListSetText(m_menulist, SETTING_EMU_REWIND_GRANULARITY, strw_buffer); - - XuiListInsertItems(m_menulist, 2, 1); + XuiListInsertItems(m_menulist, SETTING_EMU_SHOW_INFO_MSG, 1); XuiListSetText(m_menulist, SETTING_EMU_SHOW_INFO_MSG, (g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW)) ? L"Info Messages: ON" : L"Info Messages: OFF"); - XuiListInsertItems(m_menulist, 3, 1); + XuiListInsertItems(m_menulist, SETTING_EMU_SHOW_DEBUG_INFO_MSG, 1); XuiListSetText(m_menulist, SETTING_EMU_SHOW_DEBUG_INFO_MSG, (g_extern.lifecycle_mode_state & (1ULL << MODE_FPS_DRAW)) ? L"Debug Info Messages: ON" : L"Debug Info messages: OFF"); - XuiListInsertItems(m_menulist, 4, 1); + XuiListInsertItems(m_menulist, SETTING_GAMMA_CORRECTION_ENABLED, 1); XuiListSetText(m_menulist, SETTING_GAMMA_CORRECTION_ENABLED, g_extern.console.screen.gamma_correction ? L"Gamma Correction: ON" : L"Gamma correction: OFF"); - XuiListInsertItems(m_menulist, 5, 1); + XuiListInsertItems(m_menulist, SETTING_HW_TEXTURE_FILTER, 1); XuiListSetText(m_menulist, SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Default Filter: Linear" : L"Default Filter: Nearest"); break; case INGAME_MENU_MAIN_MODE: @@ -789,11 +777,13 @@ static void init_menulist(unsigned menu_id) XuiListInsertItems(m_menulist, INGAME_MENU_SETTINGS_MODE, 1); XuiListSetText(m_menulist, INGAME_MENU_SETTINGS_MODE, L"Settings ..."); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); XuiListInsertItems(m_menulist, INGAME_MENU_LOAD_STATE, 1); - XuiListSetText(m_menulist, INGAME_MENU_LOAD_STATE, L"Load State #"); + XuiListSetText(m_menulist, INGAME_MENU_LOAD_STATE, strw_buffer); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); XuiListInsertItems(m_menulist, INGAME_MENU_SAVE_STATE, 1); - XuiListSetText(m_menulist, INGAME_MENU_SAVE_STATE, L"Save State #"); + XuiListSetText(m_menulist, INGAME_MENU_SAVE_STATE, strw_buffer); XuiListInsertItems(m_menulist, INGAME_MENU_SCREENSHOT_MODE, 1); XuiListSetText(m_menulist, INGAME_MENU_SCREENSHOT_MODE, L"Take Screenshot"); @@ -805,10 +795,11 @@ static void init_menulist(unsigned menu_id) XuiListSetText(m_menulist, INGAME_MENU_RESET, L"Restart Game"); XuiListInsertItems(m_menulist, INGAME_MENU_REWIND_ENABLED, 1); - XuiListSetText(m_menulist, INGAME_MENU_REWIND_ENABLED, L"Rewind: "); + XuiListSetText(m_menulist, INGAME_MENU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); XuiListInsertItems(m_menulist, INGAME_MENU_REWIND_GRANULARITY, 1); - XuiListSetText(m_menulist, INGAME_MENU_REWIND_GRANULARITY, L"Rewind Granularity: "); + XuiListSetText(m_menulist, INGAME_MENU_REWIND_GRANULARITY, strw_buffer); XuiListInsertItems(m_menulist, INGAME_MENU_FRAME_ADVANCE, 1); XuiListSetText(m_menulist, INGAME_MENU_FRAME_ADVANCE, L"Frame Advance"); @@ -997,37 +988,6 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro switch(current_index) { - case SETTING_EMU_REWIND_ENABLED: - if (input == XUI_CONTROL_NAVIGATE_LEFT) - { - settings_set(1ULL << S_REWIND); - XuiListSetText(m_menulist, SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); - } - else if (input == XUI_CONTROL_NAVIGATE_RIGHT || - input == XUI_CONTROL_NAVIGATE_OK) - { - settings_set(1ULL << S_REWIND); - XuiListSetText(m_menulist, SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); - } - break; - case SETTING_EMU_REWIND_GRANULARITY: - if (input == XUI_CONTROL_NAVIGATE_LEFT) - { - if (g_settings.rewind_granularity > 1) - g_settings.rewind_granularity--; - - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); - XuiListSetText(m_menulist, SETTING_EMU_REWIND_GRANULARITY, strw_buffer); - } - else if (input == XUI_CONTROL_NAVIGATE_RIGHT || - input == XUI_CONTROL_NAVIGATE_OK) - { - g_settings.rewind_granularity++; - - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); - XuiListSetText(m_menulist, SETTING_EMU_REWIND_GRANULARITY, strw_buffer); - } - break; case SETTING_EMU_SHOW_INFO_MSG: if (input == XUI_CONTROL_NAVIGATE_LEFT) { @@ -1145,43 +1105,23 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) XuiListDeleteItems(m_menulist, 0, XuiListGetItemCount(m_menulist)); - XuiTextElementSetText(m_menutitle, L"Menu"); - - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); - XuiListInsertItems(m_menulist, 0, 1); - XuiListSetText(m_menulist, MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); - XuiListInsertItems(m_menulist, 1, 1); - XuiListSetText(m_menulist, MENU_XUI_ITEM_SAVE_STATE, strw_buffer); + XuiTextElementSetText(m_menutitle, L"Video Options"); if (driver.video_poke->set_aspect_ratio) driver.video_poke->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); - XuiListInsertItems(m_menulist, 2, 1); + XuiListInsertItems(m_menulist, MENU_XUI_ITEM_ASPECT_RATIO, 1); XuiListSetText(m_menulist, MENU_XUI_ITEM_ASPECT_RATIO, strw_buffer); driver.video->set_rotation(driver.video_data, g_extern.console.screen.orientation); menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); - XuiListInsertItems(m_menulist, 3, 1); + XuiListInsertItems(m_menulist, MENU_XUI_ITEM_ORIENTATION, 1); XuiListSetText(m_menulist, MENU_XUI_ITEM_ORIENTATION, strw_buffer); - XuiListInsertItems(m_menulist, 4, 1); + XuiListInsertItems(m_menulist, MENU_XUI_ITEM_RESIZE_MODE, 1); XuiListSetText(m_menulist, MENU_XUI_ITEM_RESIZE_MODE, L"Custom Ratio ..."); - XuiListInsertItems(m_menulist, 5, 1); - XuiListSetText(m_menulist, MENU_XUI_ITEM_FRAME_ADVANCE, L"Frame Advance ..."); - - XuiListInsertItems(m_menulist, 6, 1); - XuiListSetText(m_menulist, MENU_XUI_ITEM_RESET, L"Restart Game"); - - XuiListInsertItems(m_menulist, 7, 1); - XuiListSetText(m_menulist, MENU_XUI_ITEM_RETURN_TO_GAME, L"Resume Game"); - - XuiListInsertItems(m_menulist, 8, 1); - XuiListSetText(m_menulist, MENU_XUI_ITEM_QUIT_RARCH, L"Quit RetroArch"); - return 0; } @@ -1196,26 +1136,6 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr switch (current_index) { - case MENU_XUI_ITEM_LOAD_STATE: - case MENU_XUI_ITEM_SAVE_STATE: - if (input == XUI_CONTROL_NAVIGATE_LEFT) - { - rarch_state_slot_decrease(); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); - XuiListSetText(m_menulist, MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); - XuiListSetText(m_menulist, MENU_XUI_ITEM_SAVE_STATE, strw_buffer); - } - else if (input == XUI_CONTROL_NAVIGATE_RIGHT || - input == XUI_CONTROL_NAVIGATE_OK) - { - rarch_state_slot_increase(); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); - XuiListSetText(m_menulist, MENU_XUI_ITEM_LOAD_STATE, strw_buffer); - menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); - XuiListSetText(m_menulist, MENU_XUI_ITEM_SAVE_STATE, strw_buffer); - } - break; case MENU_XUI_ITEM_ASPECT_RATIO: if (input == XUI_CONTROL_NAVIGATE_LEFT) { @@ -1469,20 +1389,88 @@ HRESULT CRetroArchMain::OnControlNavigate(XUIMessageControlNavigate *pControlNav } break; case INGAME_MENU_LOAD_STATE: - break; case INGAME_MENU_SAVE_STATE: + if (input == XUI_CONTROL_NAVIGATE_LEFT) + { + rarch_state_slot_decrease(); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + XuiListSetText(m_menulist, INGAME_MENU_LOAD_STATE, strw_buffer); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + XuiListSetText(m_menulist, INGAME_MENU_SAVE_STATE, strw_buffer); + } + else if (input == XUI_CONTROL_NAVIGATE_RIGHT) + { + rarch_state_slot_increase(); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + XuiListSetText(m_menulist, INGAME_MENU_LOAD_STATE, strw_buffer); + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + XuiListSetText(m_menulist, INGAME_MENU_SAVE_STATE, strw_buffer); + } + else if (input == XUI_CONTROL_NAVIGATE_OK) + { + } break; case INGAME_MENU_SCREENSHOT_MODE: break; case INGAME_MENU_RETURN_TO_GAME: + if (input == XUI_CONTROL_NAVIGATE_OK) + { + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + process_input_ret = -1; + } break; case INGAME_MENU_RESET: + if (input == XUI_CONTROL_NAVIGATE_OK) + { + rarch_game_reset(); + g_extern.lifecycle_mode_state |= (1ULL << MODE_GAME); + process_input_ret = -1; + } break; case INGAME_MENU_REWIND_ENABLED: + if (input == XUI_CONTROL_NAVIGATE_LEFT) + { + settings_set(1ULL << S_REWIND); + XuiListSetText(m_menulist, INGAME_MENU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); + } + else if (input == XUI_CONTROL_NAVIGATE_RIGHT || + input == XUI_CONTROL_NAVIGATE_OK) + { + settings_set(1ULL << S_REWIND); + + if (g_settings.rewind_enable) + rarch_init_rewind(); + else + rarch_deinit_rewind(); + + XuiListSetText(m_menulist, INGAME_MENU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); + } break; case INGAME_MENU_REWIND_GRANULARITY: + if (input == XUI_CONTROL_NAVIGATE_LEFT) + { + if (g_settings.rewind_granularity > 1) + g_settings.rewind_granularity--; + + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + XuiListSetText(m_menulist, INGAME_MENU_REWIND_GRANULARITY, strw_buffer); + } + else if (input == XUI_CONTROL_NAVIGATE_RIGHT || + input == XUI_CONTROL_NAVIGATE_OK) + { + g_settings.rewind_granularity++; + + menu_settings_create_menu_item_label_w(strw_buffer, S_LBL_REWIND_GRANULARITY, sizeof(strw_buffer)); + XuiListSetText(m_menulist, INGAME_MENU_REWIND_GRANULARITY, strw_buffer); + } break; case INGAME_MENU_FRAME_ADVANCE: + if (g_extern.main_is_init) + { + g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE); + settings_set(1ULL << S_FRAME_ADVANCE); + process_input_ret = -1; + } break; case INGAME_MENU_QUIT_RETROARCH: if (input == XUI_CONTROL_NAVIGATE_OK) diff --git a/frontend/menu/rmenu_xui.h b/frontend/menu/rmenu_xui.h index 23f2159ddb..8044a79d43 100644 --- a/frontend/menu/rmenu_xui.h +++ b/frontend/menu/rmenu_xui.h @@ -21,9 +21,7 @@ enum { - SETTING_EMU_REWIND_ENABLED = 0, - SETTING_EMU_REWIND_GRANULARITY, - SETTING_EMU_SHOW_INFO_MSG, + SETTING_EMU_SHOW_INFO_MSG = 0, SETTING_EMU_SHOW_DEBUG_INFO_MSG, SETTING_GAMMA_CORRECTION_ENABLED, SETTING_HW_TEXTURE_FILTER,