diff --git a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu.cpp b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu.cpp index 497ce12031..c54f977fc2 100644 --- a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu.cpp +++ b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu.cpp @@ -56,6 +56,8 @@ namespace rsx m_time_display.auto_resize(); last_time = std::move(new_time); } + + m_main_menu.update(timestamp_us); } void home_menu_dialog::on_button_pressed(pad_button button_press, bool is_auto_repeat) @@ -88,6 +90,11 @@ namespace rsx std::string path = page->title; for (home_menu_page* parent = page->parent; parent; parent = parent->parent) { + if (parent->title.empty()) + { + break; + } + path = parent->title + " > " + path; } m_description.set_text(path); diff --git a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp index b749375d38..1395d9091d 100644 --- a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp +++ b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp @@ -19,7 +19,7 @@ namespace rsx namespace overlays { home_menu_main_menu::home_menu_main_menu(s16 x, s16 y, u16 width, u16 height, bool use_separators, home_menu_page* parent) - : home_menu_page(x, y, width, height, use_separators, parent, get_localized_string(localized_string_id::HOME_MENU_TITLE)) + : home_menu_page(x, y, width, height, use_separators, parent, "") { is_current_page = true; @@ -28,8 +28,15 @@ namespace rsx m_config_changed = std::make_shared(g_backup_cfg.to_string() != g_cfg.to_string()); - std::unique_ptr resume = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_RESUME), width); - add_item(resume, [](pad_button btn) -> page_navigation + m_sidebar = std::make_unique(350, height, false); + m_sidebar->set_pos(x, y); + m_sidebar->hide_prompt_buttons(); + m_sidebar->back_color = color4f(0.15f, 0.15f, 0.15f, 0.85f); + + m_sliding_animation.duration_sec = 0.5f; + m_sliding_animation.type = animation_type::ease_in_out_cubic; + + add_item(get_localized_string(localized_string_id::HOME_MENU_RESUME), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -41,8 +48,7 @@ namespace rsx if (rsx::overlays::friends_list_dialog::rpcn_configured()) { - std::unique_ptr friends = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_FRIENDS), width); - add_item(friends, [](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_FRIENDS), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -76,8 +82,7 @@ namespace rsx } if (!trop_name.empty()) { - std::unique_ptr trophies = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_TROPHIES), width); - add_item(trophies, [trop_name = std::move(trop_name)](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_TROPHIES), [trop_name = std::move(trop_name)](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -93,8 +98,7 @@ namespace rsx }); } - std::unique_ptr screenshot = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_SCREENSHOT), width); - add_item(screenshot, [](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_SCREENSHOT), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -102,8 +106,7 @@ namespace rsx return page_navigation::exit_for_screenshot; }); - std::unique_ptr recording = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_RECORDING), width); - add_item(recording, [](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_RECORDING), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -112,8 +115,7 @@ namespace rsx return page_navigation::exit; }); - std::unique_ptr fullscreen = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_TOGGLE_FULLSCREEN), width); - add_item(fullscreen, [](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_TOGGLE_FULLSCREEN), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -125,8 +127,7 @@ namespace rsx add_page(std::make_shared(x, y, width, height, use_separators, this)); - std::unique_ptr restart = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_RESTART), width); - add_item(restart, [](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_RESTART), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -141,8 +142,7 @@ namespace rsx return page_navigation::exit; }); - std::unique_ptr exit_game = std::make_unique(get_localized_string(localized_string_id::HOME_MENU_EXIT_GAME), width); - add_item(exit_game, [](pad_button btn) -> page_navigation + add_item(get_localized_string(localized_string_id::HOME_MENU_EXIT_GAME), [](pad_button btn) -> page_navigation { if (btn != pad_button::cross) return page_navigation::stay; @@ -156,5 +156,77 @@ namespace rsx apply_layout(); } + + void home_menu_main_menu::add_sidebar_entry(std::string_view title) + { + std::unique_ptr label_widget = std::make_unique