From 0330fe6b741c88b211ba993a3bff14f77fa9b5b3 Mon Sep 17 00:00:00 2001 From: Sergio Date: Mon, 7 Oct 2024 17:28:34 +0200 Subject: [PATCH] Make uniques en intro.cpp --- source/intro.cpp | 40 +++++++++++----------------------------- source/intro.h | 15 +++++++++------ 2 files changed, 20 insertions(+), 35 deletions(-) diff --git a/source/intro.cpp b/source/intro.cpp index 0396afc..c4f1791 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -19,19 +19,18 @@ struct JA_Music_t; // Constructor -Intro::Intro(JA_Music_t *music) +Intro::Intro(JA_Music_t *music):music(music) { // Copia los punteros - this->music = music; input = Input::get(); asset = Asset::get(); screen = Screen::get(); SDL_Renderer *renderer = screen->getRenderer(); // Reserva memoria para los objetos - eventHandler = new SDL_Event(); - texture = new Texture(renderer, asset->get("intro.png")); - text = new Text(asset->get("nokia.png"), asset->get("nokia.txt"), renderer); + eventHandler = std::make_unique(); + texture = std::make_unique(renderer, asset->get("intro.png")); + text = std::make_unique(asset->get("nokia.png"), asset->get("nokia.txt"), renderer); // Inicializa variables section::name = section::NAME_INTRO; @@ -41,16 +40,16 @@ Intro::Intro(JA_Music_t *music) scene = 1; // Inicializa los bitmaps de la intro - const int totalBitmaps = 6; + constexpr int totalBitmaps = 6; for (int i = 0; i < totalBitmaps; ++i) { - SmartSprite *ss = new SmartSprite(texture); + auto ss = std::make_unique(texture.get()); ss->setWidth(128); ss->setHeight(96); ss->setEnabledCounter(20); ss->setDestX(param.game.gameArea.centerX - 64); ss->setDestY(param.game.gameArea.firstQuarterY - 24); - bitmaps.push_back(ss); + bitmaps.push_back(ss.get()); } bitmaps[0]->setPosX(-128); @@ -103,16 +102,16 @@ Intro::Intro(JA_Music_t *music) bitmaps[5]->setSpriteClip(128, 192, 128, 96); // Inicializa los textos de la intro - const int totalTexts = 9; + constexpr int totalTexts = 9; for (int i = 0; i < totalTexts; ++i) { - Writer *w = new Writer(text); + auto w = std::make_unique(text.get()); w->setPosX(BLOCK * 0); w->setPosY(param.game.height - (BLOCK * 6)); w->setKerning(-1); w->setEnabled(false); w->setEnabledCounter(180); - texts.push_back(w); + texts.push_back(w.get()); } // Un dia qualsevol de l'any 2000 @@ -157,23 +156,6 @@ Intro::Intro(JA_Music_t *music) } } -// Destructor -Intro::~Intro() -{ - delete eventHandler; - delete texture; - - for (auto bitmap : bitmaps) - { - delete bitmap; - } - - for (auto text : texts) - { - delete text; - } -} - // Recarga todas las texturas void Intro::reloadTextures() { @@ -185,7 +167,7 @@ void Intro::reloadTextures() void Intro::checkEvents() { // Comprueba los eventos que hay en la cola - while (SDL_PollEvent(eventHandler) != 0) + while (SDL_PollEvent(eventHandler.get()) != 0) { // Evento de salida de la aplicación if (eventHandler->type == SDL_QUIT) diff --git a/source/intro.h b/source/intro.h index d601377..ee64343 100644 --- a/source/intro.h +++ b/source/intro.h @@ -3,12 +3,13 @@ #include // for SDL_Event #include // for Uint32, Uint8 #include // for vector +#include class Asset; class Input; class Screen; class SmartSprite; -class Text; -class Texture; +#include "texture.h" +#include "text.h" class Writer; struct JA_Music_t; @@ -23,13 +24,15 @@ class Intro private: // Objetos y punteros Screen *screen; // Objeto encargado de dibujar en pantalla - Texture *texture; // Textura con los graficos - SDL_Event *eventHandler; // Manejador de eventos Asset *asset; // Objeto que gestiona todos los ficheros de recursos Input *input; // Objeto pata gestionar la entrada + + std::unique_ptr texture; // Textura con los graficos + std::unique_ptr eventHandler; // Manejador de eventos + std::unique_ptr text; // Textos de la intro + std::vector bitmaps; // Vector con los sprites inteligentes para los dibujos de la intro std::vector texts; // Textos de la intro - Text *text; // Textos de la intro // Variables Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa @@ -60,7 +63,7 @@ public: Intro(JA_Music_t *music); // Destructor - ~Intro(); + ~Intro() = default; // Bucle principal void run();