diff --git a/source/demo.cpp b/source/demo.cpp index 89373d9..08adfa4 100644 --- a/source/demo.cpp +++ b/source/demo.cpp @@ -40,10 +40,10 @@ Demo::Demo() currentRoom = rooms[roomIndex]; // Crea los objetos - itemTracker = new ItemTracker(); - scoreboard = new Scoreboard(&board); - room = new Room(resource->getRoom(currentRoom), itemTracker, &board.items, false); - text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); + itemTracker = std::make_unique(); + scoreboard = std::make_unique(&board); + room = std::make_shared(resource->getRoom(currentRoom), itemTracker, &board.items, false); + text = resource->getText("smb2.txt"); // Inicializa el resto de variables counter = 0; @@ -61,15 +61,6 @@ Demo::Demo() options.section.subsection = Subsection::NONE; } -Demo::~Demo() -{ - // Libera la memoria de los objetos - delete itemTracker; - delete scoreboard; - delete room; - delete text; -} - // Comprueba los eventos de la cola void Demo::checkEvents() { diff --git a/source/demo.h b/source/demo.h index a0eb46f..2e6033e 100644 --- a/source/demo.h +++ b/source/demo.h @@ -5,6 +5,7 @@ #include // Para Uint32 #include // Para string, basic_string #include // Para vector +#include // Para shared_ptr #include "scoreboard.h" // Para board_t class Asset; class Debug; @@ -21,16 +22,16 @@ class Demo { private: // Objetos y punteros - Screen *screen; // Objeto encargado de manejar el renderizador - SDL_Renderer *renderer; // El renderizador de la ventana - Room *room; // Objeto encargado de gestionar cada habitación del juego - Resource *resource; // Objeto con los recursos - Asset *asset; // Objeto con la ruta a todos los ficheros de recursos - Input *input; // Objeto pata gestionar la entrada - Text *text; // Objeto para los textos del juego - Scoreboard *scoreboard; // Objeto encargado de gestionar el marcador - ItemTracker *itemTracker; // Lleva el control de los objetos recogidos - Debug *debug; // Objeto para gestionar la información de debug + Screen *screen; // Objeto encargado de manejar el renderizador + SDL_Renderer *renderer; // El renderizador de la ventana + std::shared_ptr room; // Objeto encargado de gestionar cada habitación del juego + Resource *resource; // Objeto con los recursos + Asset *asset; // Objeto con la ruta a todos los ficheros de recursos + Input *input; // Objeto pata gestionar la entrada + std::shared_ptr text; // Objeto para los textos del juego + std::unique_ptr scoreboard; // Objeto encargado de gestionar el marcador + std::unique_ptr itemTracker; // Lleva el control de los objetos recogidos + Debug *debug; // Objeto para gestionar la información de debug // Variables Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa @@ -77,7 +78,7 @@ public: Demo(); // Destructor - ~Demo(); + ~Demo() = default; // Bucle para el juego void run();