diff --git a/source/director.cpp b/source/director.cpp index 42dead9..3a96d31 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -626,6 +626,7 @@ void Director::runInit() { Resource::get()->reload(); } + ServiceMenu::get()->reset(); section::name = section::Name::LOGO; } diff --git a/source/service_menu.cpp b/source/service_menu.cpp index 7aa90fb..7457da1 100644 --- a/source/service_menu.cpp +++ b/source/service_menu.cpp @@ -30,16 +30,15 @@ ServiceMenu::ServiceMenu() current_settings_group_(SettingsGroup::MAIN), previous_settings_group_(current_settings_group_) { - initializeOptions(); - setAnchors(); - updateMenu(current_settings_group_); + reset(); } // Alterna la visibilidad del menú de servicio void ServiceMenu::toggle() { enabled_ = !enabled_; - reset(); + if (!enabled_) + reset(); } // Dibuja el menú de servicio en pantalla @@ -255,6 +254,8 @@ void ServiceMenu::moveBack() // Inicializa todas las opciones del menú de servicio void ServiceMenu::initializeOptions() { + options_.clear(); + // Video options_.emplace_back(lang::getText("[SERVICE_MENU] FULLSCREEN"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.video.fullscreen, ValueType::BOOL); options_.emplace_back(lang::getText("[SERVICE_MENU] WINDOW_SIZE"), SettingsGroup::VIDEO, OptionBehavior::ADJUST, &options.window.size, ValueType::INT, 1, options.window.max_size, 1); @@ -345,6 +346,8 @@ void ServiceMenu::reset() { selected_ = 0; previous_settings_group_ = current_settings_group_ = SettingsGroup::MAIN; + initializeOptions(); + setAnchors(); updateMenu(current_settings_group_); } diff --git a/source/service_menu.h b/source/service_menu.h index fc076b2..6b478a7 100644 --- a/source/service_menu.h +++ b/source/service_menu.h @@ -22,6 +22,7 @@ public: void toggle(); // Muestra u oculta el menú de servicio void render(); // Dibuja el menú de servicio en pantalla void update(); // Actualiza el estado del menú de servicio + void reset(); // Reinicia el menú al estado inicial // --- Métodos de control de navegación --- void setSelectorUp(); // Mueve el selector hacia arriba @@ -176,7 +177,6 @@ private: // --- Métodos internos: Lógica de menú --- void applySettings(SettingsGroup group); // Aplica la configuración de un grupo void updateMenu(SettingsGroup group); // Actualiza las opciones mostradas según el grupo - void reset(); // Reinicia el menú al estado inicial // --- Métodos internos: Utilidades --- void updateCounter(); // Actualiza el contador interno