void SkinManager::loadScene(string sceneName, HXUIOBJ curScene, bool stayVisible, string objectRef, void * pvInitData) { HXUIOBJ hScene; string path; if (CurrentSkin.isCompressed) { path = "file://" + CurrentSkin.XZPPath; } else { path = "file://" + CurrentSkin.SkinPath; } CXuiScene::SceneCreate( strtowstr(path).c_str(), strtowstr(sceneName).c_str(), &hScene, pvInitData); if(objectRef == "") objectRef = sceneName; getXurObjectHandle[objectRef] = hScene; DebugMsg("SkinManager", "SceneObjectMap- Scene Name: %s, HXUIOBJ: %08X", objectRef.c_str(), hScene); XuiSceneNavigateForward(curScene, stayVisible, hScene, XUSER_INDEX_ANY); }
HRESULT CRetroArchMain::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { xdk_d3d_video_t *vid = (xdk_d3d_video_t*)driver.video_data; HRESULT hr; int current_index; bool hdmenus_allowed = (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_HD)); current_index= XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; unsigned action = xui_input_to_rgui_action(input); HXUIOBJ current_obj = current_menu; switch (current_index) { case INGAME_MENU_CHANGE_LIBRETRO_CORE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_libretrocore_browser.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_LOAD_GAME_HISTORY_MODE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_load_game_history.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_CHANGE_GAME: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_filebrowser.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_CORE_OPTIONS_MODE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_core_options.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_VIDEO_OPTIONS_MODE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_video_options.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_AUDIO_OPTIONS_MODE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_audio_options.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_INPUT_OPTIONS_MODE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_controls.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_PATH_OPTIONS_MODE: break; case INGAME_MENU_SETTINGS_MODE: if (action == RGUI_ACTION_OK) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_settings.xur", NULL, ¤t_menu); if (hr < 0) RARCH_ERR("Failed to load scene.\n"); XuiSceneNavigateForward(current_obj, false, current_menu, XUSER_INDEX_FOCUS); } break; case INGAME_MENU_LOAD_STATE: process_input_ret = menu_set_settings(RGUI_SETTINGS_SAVESTATE_LOAD, action); 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); break; case INGAME_MENU_SAVE_STATE: process_input_ret = menu_set_settings(RGUI_SETTINGS_SAVESTATE_SAVE, action); 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); break; case INGAME_MENU_SCREENSHOT_MODE: break; case INGAME_MENU_RETURN_TO_GAME: process_input_ret = menu_set_settings(RGUI_SETTINGS_RESUME_GAME, action); break; case INGAME_MENU_RESET: process_input_ret = menu_set_settings(RGUI_SETTINGS_RESTART_GAME, action); break; case INGAME_MENU_QUIT_RETROARCH: process_input_ret = menu_set_settings(RGUI_SETTINGS_QUIT_RARCH, action); break; } bHandled = TRUE; switch(action) { case RGUI_ACTION_LEFT: case RGUI_ACTION_RIGHT: case RGUI_ACTION_UP: case RGUI_ACTION_DOWN: pControlNavigateData->hObjDest = pControlNavigateData->hObjSource; break; default: break; } return 0; }