tots els singletons tornats a fer a la vieja y gorda usanza

This commit is contained in:
2025-05-30 10:17:41 +02:00
parent 64b6f66044
commit f661da5215
29 changed files with 322 additions and 379 deletions

View File

@@ -34,6 +34,7 @@
#include "resource.h" // Para Resource
#include "screen.h" // Para Screen
#include "section.h" // Para Name, Options, name, options
#include "service_menu.h" // Para ServiceMenu
#include "title.h" // Para Title
#include "utils.h" // Para Overrides, overrides
@@ -91,13 +92,14 @@ void Director::init()
loadParams(); // Carga los parámetros del programa
loadScoreFile(); // Carga el archivo de puntuaciones
// Inicialización de subsistemas
// Inicialización de subsistemas principales
lang::loadFromFile(getLangFile(static_cast<lang::Code>(options.game.language))); // Carga el archivo de idioma
Screen::init(); // Inicializa la pantalla y el sistema de renderizado
Audio::get(); // Activa el sistema de audio
Audio::init(); // Activa el sistema de audio
Resource::init(); // Inicializa el sistema de gestión de recursos
Input::init(Asset::get()->get("gamecontrollerdb.txt")); // Carga configuración de controles
bindInputs(); // Asigna los controles a la entrada del sistema
ServiceMenu::init(); // Inicializa el menú de servicio
// Inicialización del sistema de notificaciones
Notifier::init(std::string(), Resource::get()->getText("8bithud"));
@@ -109,20 +111,26 @@ void Director::init()
#endif
}
// Cierra todo
// Cierra todo y libera recursos del sistema y de los singletons
void Director::close()
{
// Guarda las opciones actuales en el archivo de configuración
saveOptionsFile(Asset::get()->get("config.txt"));
Notifier::destroy();
Input::destroy();
Resource::destroy();
Screen::destroy();
Asset::destroy();
// Libera los singletons y recursos en orden inverso al de inicialización
Notifier::destroy(); // Libera el sistema de notificaciones
ServiceMenu::destroy(); // Libera el sistema de menú de servicio
Input::destroy(); // Libera el sistema de entrada
Resource::destroy(); // Libera el sistema de recursos gráficos y de texto
Audio::destroy(); // Libera el sistema de audio
Screen::destroy(); // Libera el sistema de pantalla y renderizado
Asset::destroy(); // Libera el gestor de archivos
// Libera todos los recursos de SDL
SDL_Quit();
#ifdef ARCADE
// Si está en modo arcade, apaga el sistema si corresponde
shutdownSystem(section::options == section::Options::QUIT_WITH_CONTROLLER);
#endif
}
@@ -460,7 +468,7 @@ void Director::setFileList()
void Director::checkProgramArguments(int argc, const char *argv[])
{
// Establece la ruta del programa
executable_path_ = argv[0];
executable_path_ = getPath(argv[0]);
// Comprueba el resto de parámetros
for (int i = 1; i < argc; ++i)
@@ -605,8 +613,8 @@ void Director::runDemoGame()
// Ejecuta la sección init
void Director::runInit()
{
Audio::get().stopMusic();
Audio::get().stopAllSounds();
Audio::get()->stopMusic();
Audio::get()->stopAllSounds();
if (section::options == section::Options::RELOAD || true)
{
Resource::get()->reload();