From 22c472412534049b05e1f0c66eb4272060b8a04a Mon Sep 17 00:00:00 2001 From: Sergio Valor Martinez Date: Mon, 24 Oct 2022 14:01:59 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1adidas=20pausas=20en=20los=20creditos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/credits.cpp | 54 ++++++++++++++++++++++++++++++++++++---------- source/credits.h | 13 +++++++---- 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/source/credits.cpp b/source/credits.cpp index ec4e6bc..d55ae68 100644 --- a/source/credits.cpp +++ b/source/credits.cpp @@ -14,6 +14,8 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset) // Inicializa variables counter = 0; + counterEnabled = true; + subCounter = 0; section.name = SECTION_PROG_CREDITS; section.subsection = 0; ticks = 0; @@ -31,6 +33,7 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset) texts.push_back({"FINISH THEM", stringToColor("white")}); texts.push_back({"", stringToColor("white")}); texts.push_back({"", stringToColor("white")}); + texts.push_back({"KEYS:", stringToColor("yellow")}); texts.push_back({"", stringToColor("white")}); texts.push_back({"USE CURSORS TO MOVE AND JUMP", stringToColor("white")}); @@ -41,10 +44,12 @@ Credits::Credits(SDL_Renderer *renderer, Screen *screen, Asset *asset) texts.push_back({"ESC TO EXIT GAME", stringToColor("white")}); texts.push_back({"", stringToColor("white")}); texts.push_back({"", stringToColor("white")}); + texts.push_back({"A GAME BY JAILDESIGNER", stringToColor("yellow")}); texts.push_back({"MADE ON SUMMER/FALL 2022", stringToColor("yellow")}); texts.push_back({"", stringToColor("white")}); texts.push_back({"", stringToColor("white")}); + texts.push_back({"LOVE JAILGAMES!}", stringToColor("white")}); texts.push_back({"", stringToColor("white")}); @@ -116,7 +121,8 @@ void Credits::fillTexture() { // Rellena la textura de texto SDL_SetRenderTarget(renderer, textTexture); - SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00); + const color_t c = stringToColor("black"); + SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0x00); SDL_RenderClear(renderer); // Escribe el texto en la textura @@ -133,11 +139,11 @@ void Credits::fillTexture() // Rellena la textura que cubre el texto SDL_SetRenderTarget(renderer, coverTexture); - SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00); + SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0x00); SDL_RenderClear(renderer); // Los primeros 8 pixels crea una malla - SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); + SDL_SetRenderDrawColor(renderer, c.r, c.g, c.b, 0xFF); for (int i = 0; i < 256; i += 2) { SDL_RenderDrawPoint(renderer, i, 0); @@ -158,6 +164,35 @@ void Credits::fillTexture() SDL_SetRenderTarget(renderer, nullptr); } +// Actualiza el contador +void Credits::updateCounter() +{ + // Incrementa el contador + if (counterEnabled) + { + counter++; + if (counter == 224 || counter == 544 || counter == 672) + { + counterEnabled = false; + } + } + else + { + subCounter++; + if (subCounter == 100) + { + counterEnabled = true; + subCounter = 0; + } + } + + // Comprueba si ha terminado la sección + if (counter > 1000) + { + section.name = SECTION_PROG_DEMO; + } +} + // Actualiza las variables void Credits::update() { @@ -170,14 +205,8 @@ void Credits::update() // Comprueba el manejador de eventos checkEventHandler(); - // Incrementa el contador - counter++; - - // Comprueba si ha terminado la sección - if (counter > 1000) - { - section.name = SECTION_PROG_DEMO; - } + // Actualiza el contador + updateCounter(); } } @@ -198,6 +227,9 @@ void Credits::render() SDL_Rect rect = {0, offset * 2, 256, 192}; SDL_RenderCopy(renderer, coverTexture, nullptr, &rect); + //text->write(0,0,std::to_string(counter)); + //text->write(0,8,std::to_string(counterEnabled)); + // Vuelca el contenido del renderizador en pantalla screen->blit(); } diff --git a/source/credits.h b/source/credits.h index a2a19c4..ef9e81d 100644 --- a/source/credits.h +++ b/source/credits.h @@ -32,10 +32,12 @@ private: SDL_Texture *coverTexture; // Textura para cubrir el texto // Variables - int counter; // Contador - section_t section; // Estado del bucle principal para saber si continua o se sale - Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa - Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa + int counter; // Contador + bool counterEnabled; // Indica si esta activo el contador + int subCounter; // Contador secundario + section_t section; // Estado del bucle principal para saber si continua o se sale + Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa + Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa std::vector texts; // Vector con las letras de la marquesina // Actualiza las variables @@ -47,6 +49,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Actualiza el contador + void updateCounter(); + // Escribe el texto en la textura void fillTexture();