From 04ff428aa0ff521267ae757414216ed145ed46af Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 7 Feb 2025 14:55:34 +0100 Subject: [PATCH] Treballant en el segon logo --- source/logo.cpp | 70 +++++++++++++++++++++++++++++++++++-------------- source/logo.h | 26 ++++++++++++++---- 2 files changed, 72 insertions(+), 24 deletions(-) diff --git a/source/logo.cpp b/source/logo.cpp index 6ee92b4..0491d33 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -19,8 +19,7 @@ Logo::Logo() : since_texture_(Resource::get()->getTexture("logo_since_1998.png")), since_sprite_(std::make_unique(since_texture_)), - jail_texture_(Resource::get()->getTexture("logo_jailgames.png")), - ticks_(0) + jail_texture_(Resource::get()->getTexture("logo_jailgames.png")) { // Inicializa variables @@ -114,7 +113,7 @@ void Logo::checkInput() globalInputs::check(); } -// Gestiona el logo de JAILGAME +// Gestiona el logo de JAILGAMES void Logo::updateJAILGAMES() { if (counter_ == 30) @@ -149,6 +148,11 @@ void Logo::updateJAILGAMES() } } +// Gestiona el logo de RETROWEEKEND +void Logo::updateRETROWEEKEND() +{ +} + // Gestiona el color de las texturas void Logo::updateTextureColors() { @@ -190,11 +194,20 @@ void Logo::update() // Comprueba las entradas checkInput(); - // Gestiona el logo de JAILGAME - updateJAILGAMES(); + switch (state_) + { + case LogoState::JAILGAMES: + updateJAILGAMES(); + updateTextureColors(); + break; - // Gestiona el color de las texturas - updateTextureColors(); + case LogoState::RETROWEEKEND: + updateRETROWEEKEND(); + break; + + default: + break; + } // Gestiona el contador y sus eventos counter_++; @@ -213,24 +226,23 @@ void Logo::update() // Dibuja en pantalla void Logo::render() { - // Prepara para empezar a dibujar en la textura de juego Screen::get()->start(); - - // Limpia la pantalla Screen::get()->clean(); - // Dibuja los sprites - for (auto &sprite : jail_sprite_) + switch (state_) { - sprite->render(); + case LogoState::JAILGAMES: + renderJAILGAMES(); + break; + + case LogoState::RETROWEEKEND: + renderRETROWEEKEND(); + break; + + default: + break; } - if (counter_ >= SHOW_SINCE_SPRITE_COUNTER_MARK) - { - since_sprite_->render(); - } - - // Vuelca el contenido del renderizador en pantalla Screen::get()->render(); } @@ -247,4 +259,24 @@ void Logo::run() checkEvents(); // Tiene que ir antes del render render(); } +} + +// Renderiza el logo de JAILGAMES +void Logo::renderJAILGAMES() +{ + // Dibuja los sprites + for (auto &sprite : jail_sprite_) + { + sprite->render(); + } + + if (counter_ >= SHOW_SINCE_SPRITE_COUNTER_MARK) + { + since_sprite_->render(); + } +} + +// Renderiza el logo de RETROWEEKEND +void Logo::renderRETROWEEKEND() +{ } \ No newline at end of file diff --git a/source/logo.h b/source/logo.h index a3b1b86..84ccd82 100644 --- a/source/logo.h +++ b/source/logo.h @@ -20,6 +20,12 @@ struct Color; class Logo { private: + enum class LogoState + { + JAILGAMES, + RETROWEEKEND, + }; + // Constantes static constexpr int SHOW_SINCE_SPRITE_COUNTER_MARK = 70; // Tiempo del contador en el que empieza a verse el sprite de "SINCE 1998" static constexpr int INIT_FADE_COUNTER_MARK = 300; // Tiempo del contador cuando inicia el fade a negro @@ -34,10 +40,11 @@ private: std::vector> jail_sprite_; // Vector con los sprites de cada linea que forman el bitmap JAILGAMES // Variables - std::vector color_; // Vector con los colores para el fade - int counter_; // Contador - Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa - SDL_Point dest_; // Posición X donde dibujar el logo + std::vector color_; // Vector con los colores para el fade + int counter_; // Contador + Uint32 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa + SDL_Point dest_; // Posición X donde dibujar el logo + LogoState state_ = LogoState::JAILGAMES; // El estado indica qué logo se está procesando // Actualiza las variables void update(); @@ -51,9 +58,18 @@ private: // Comprueba las entradas void checkInput(); - // Gestiona el logo de JAILGAME + // Gestiona el logo de JAILGAMES void updateJAILGAMES(); + // Gestiona el logo de RETROWEEKEND + void updateRETROWEEKEND(); + + // Renderiza el logo de JAILGAMES + void renderJAILGAMES(); + + // Renderiza el logo de RETROWEEKEND + void renderRETROWEEKEND(); + // Gestiona el color de las texturas void updateTextureColors();