From 01017cd0fe21396e465e34e513320c90d66b97e0 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 14 Jun 2025 18:21:03 +0200 Subject: [PATCH] ServiceMenu: afegida memoria per al menu principal --- source/options.cpp | 5 ++--- source/service_menu.cpp | 25 ++++++++++++++++--------- source/service_menu.h | 1 + 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/source/options.cpp b/source/options.cpp index b8006a1..cfdca2c 100644 --- a/source/options.cpp +++ b/source/options.cpp @@ -13,7 +13,7 @@ namespace Options { // --- Variables globales --- WindowOptions window; // Opciones de la ventana - SettingsOptions settings; // Opciones del juego + SettingsOptions settings; // Opciones del juego VideoOptions video; // Opciones de vídeo AudioOptions audio; // Opciones de audio std::vector controllers; // Opciones de mando para cada jugador @@ -109,8 +109,7 @@ namespace Options // El fichero no existe else { - // Crea el fichero con los valores por defecto - saveToFile(); + saveToFile(); // Crea el fichero con los valores por defecto } // Normaliza los valores diff --git a/source/service_menu.cpp b/source/service_menu.cpp index 7ba1918..736e9b8 100644 --- a/source/service_menu.cpp +++ b/source/service_menu.cpp @@ -286,9 +286,11 @@ void ServiceMenu::adjustOption(bool adjust_up) void ServiceMenu::selectOption() { if (display_options_.empty() || selected_ >= display_options_.size()) - { return; - } + + // Si estamos en el menú principal, guarda la selección actual + if (current_settings_group_ == SettingsGroup::MAIN) + main_menu_selected_ = selected_; // Carpeta if (display_options_.at(selected_)->type == ValueType::FOLDER) @@ -338,7 +340,12 @@ void ServiceMenu::moveBack() } else { - selected_ = 0; + // Si vamos a volver al menú principal, restaura la selección guardada + if (previous_settings_group_ == SettingsGroup::MAIN) + selected_ = main_menu_selected_; + else + selected_ = 0; + current_settings_group_ = previous_settings_group_; updateMenu(current_settings_group_); setOptionsPosition(); @@ -587,16 +594,16 @@ std::string ServiceMenu::settingsGroupToString(SettingsGroup group) const switch (group) { case SettingsGroup::MAIN: - return Lang::getText("[SERVICE_MENU] TITLE"); + return Lang::getText("[SERVICE_MENU] TITLE"); case SettingsGroup::VIDEO: - return Lang::getText("[SERVICE_MENU] VIDEO"); + return Lang::getText("[SERVICE_MENU] VIDEO"); case SettingsGroup::AUDIO: - return Lang::getText("[SERVICE_MENU] AUDIO"); + return Lang::getText("[SERVICE_MENU] AUDIO"); case SettingsGroup::SETTINGS: - return Lang::getText("[SERVICE_MENU] SETTINGS"); + return Lang::getText("[SERVICE_MENU] SETTINGS"); case SettingsGroup::SYSTEM: - return Lang::getText("[SERVICE_MENU] SYSTEM"); + return Lang::getText("[SERVICE_MENU] SYSTEM"); default: - return Lang::getText("[SERVICE_MENU] TITLE"); + return Lang::getText("[SERVICE_MENU] TITLE"); } } \ No newline at end of file diff --git a/source/service_menu.h b/source/service_menu.h index eafa877..423a105 100644 --- a/source/service_menu.h +++ b/source/service_menu.h @@ -191,6 +191,7 @@ private: SettingsGroup previous_settings_group_; // Grupo de opciones anterior Aspect aspect_ = Aspect::ASPECT1; // Estilo visual del menú std::string title_; // Titulo a mostrar en el menu + size_t main_menu_selected_ = 0; // Recuerda la selección del menú principal // --- Variables de aspecto --- Color bg_color_ = SERV_MENU_BG_COLOR; // Color de fondo