From 1839df142d9542a6f6ac0cacc1db76e96312206e Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 14 Aug 2024 19:24:20 +0200 Subject: [PATCH] fix: trampa per arreglar en linux que una textura del logo no canvia de color i no se sap perque --- source/logo.cpp | 67 +++++++++++++++++++++++++++---------------------- source/logo.h | 9 ++++--- 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/source/logo.cpp b/source/logo.cpp index 6e1d469..64ac74c 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -10,28 +10,30 @@ Logo::Logo(Screen *screen, Asset *asset, Input *input, param_t *param, section_t this->input = input; this->param = param; this->section = section; - SDL_Renderer *renderer = screen->getRenderer(); + SDL_Renderer *renderer = screen->getRenderer(); // Reserva memoria para los punteros eventHandler = new SDL_Event(); jailTexture = new Texture(renderer, asset->get("logo_jailgames.png")); sinceTexture = new Texture(renderer, asset->get("logo_since_1998.png")); sinceSprite = new Sprite((param->gameWidth - sinceTexture->getWidth()) / 2, 83 + jailTexture->getHeight() + 5, sinceTexture->getWidth(), sinceTexture->getHeight(), sinceTexture); - sinceSprite->setSpriteClip(0, 0, sinceTexture->getWidth(), sinceTexture->getHeight()); - sinceTexture->setColor(0, 0, 0); // Inicializa variables counter = 0; section->name = SECTION_PROG_LOGO; ticks = 0; ticksSpeed = 15; - initFade = 300; - endLogo = 400; - postLogo = 20; + showSinceSprite_cm = 70; + initFade_cm = 300; + endLogo_cm = 400; + postLogoDuration = 20; speed = 8; dest.x = GAMECANVAS_CENTER_X - jailTexture->getWidth() / 2; dest.y = GAMECANVAS_CENTER_Y - jailTexture->getHeight() / 2; sinceSprite->setPosY(dest.y + jailTexture->getHeight() + 5); + sinceSprite->setSpriteClip(0, 0, sinceTexture->getWidth(), sinceTexture->getHeight()); + sinceSprite->setEnabled(false); + sinceTexture->setColor(0x00, 0x00, 0x00); // Esto en linux no hace nada ?? // Crea los sprites de cada linea for (int i = 0; i < jailTexture->getHeight(); ++i) @@ -58,9 +60,9 @@ Logo::Logo(Screen *screen, Asset *asset, Input *input, param_t *param, section_t // Destructor Logo::~Logo() { - for (auto s : jailSprite) + for (auto sprite : jailSprite) { - delete s; + delete sprite; } delete sinceSprite; @@ -149,86 +151,85 @@ void Logo::updateJAILGAMES() // Gestiona el color de las texturas void Logo::updateTextureColors() { - const int ini = 70; const int inc = 4; - if (counter == ini + inc * 0) + if (counter <= showSinceSprite_cm + inc * 0) { sinceTexture->setColor(color[0].r, color[0].g, color[0].b); } - else if (counter == ini + inc * 1) + else if (counter == showSinceSprite_cm + inc * 1) { sinceTexture->setColor(color[1].r, color[1].g, color[1].b); } - else if (counter == ini + inc * 2) + else if (counter == showSinceSprite_cm + inc * 2) { sinceTexture->setColor(color[2].r, color[2].g, color[2].b); } - else if (counter == ini + inc * 3) + else if (counter == showSinceSprite_cm + inc * 3) { sinceTexture->setColor(color[3].r, color[3].g, color[3].b); } - else if (counter == ini + inc * 4) + else if (counter == showSinceSprite_cm + inc * 4) { sinceTexture->setColor(color[4].r, color[4].g, color[4].b); } - else if (counter == ini + inc * 5) + else if (counter == showSinceSprite_cm + inc * 5) { sinceTexture->setColor(color[5].r, color[5].g, color[5].b); } - else if (counter == ini + inc * 6) + else if (counter == showSinceSprite_cm + inc * 6) { sinceTexture->setColor(color[6].r, color[6].g, color[6].b); } - else if (counter == ini + inc * 7) + else if (counter == showSinceSprite_cm + inc * 7) { sinceTexture->setColor(color[7].r, color[7].g, color[7].b); } - else if (counter == initFade + inc * 0) + else if (counter == initFade_cm + inc * 0) { jailTexture->setColor(color[6].r, color[6].g, color[6].b); sinceTexture->setColor(color[6].r, color[6].g, color[6].b); } - else if (counter == initFade + inc * 1) + else if (counter == initFade_cm + inc * 1) { jailTexture->setColor(color[5].r, color[5].g, color[5].b); sinceTexture->setColor(color[5].r, color[5].g, color[5].b); } - else if (counter == initFade + inc * 2) + else if (counter == initFade_cm + inc * 2) { jailTexture->setColor(color[4].r, color[4].g, color[4].b); sinceTexture->setColor(color[4].r, color[4].g, color[4].b); } - else if (counter == initFade + inc * 3) + else if (counter == initFade_cm + inc * 3) { jailTexture->setColor(color[3].r, color[3].g, color[3].b); sinceTexture->setColor(color[3].r, color[3].g, color[3].b); } - else if (counter == initFade + inc * 4) + else if (counter == initFade_cm + inc * 4) { jailTexture->setColor(color[2].r, color[2].g, color[2].b); sinceTexture->setColor(color[2].r, color[2].g, color[2].b); } - else if (counter == initFade + inc * 5) + else if (counter == initFade_cm + inc * 5) { jailTexture->setColor(color[1].r, color[1].g, color[1].b); sinceTexture->setColor(color[1].r, color[1].g, color[1].b); } - else if (counter == initFade + inc * 6) + else if (counter == initFade_cm + inc * 6) { jailTexture->setColor(color[0].r, color[0].g, color[0].b); sinceTexture->setColor(color[0].r, color[0].g, color[0].b); @@ -250,20 +251,26 @@ void Logo::update() // Comprueba las entradas checkInput(); - // Incrementa el contador - counter++; - // Gestiona el logo de JAILGAME updateJAILGAMES(); // Gestiona el color de las texturas updateTextureColors(); + // Gestiona el contador y sus eventos + counter++; + // Comprueba si ha terminado el logo - if (counter == endLogo + postLogo) + if (counter == endLogo_cm + postLogoDuration) { section->name = SECTION_PROG_INTRO; } + + // Comprueba si se ha de mostrar el sprite + else if (counter == showSinceSprite_cm) + { + sinceSprite->setEnabled(true); + } } } @@ -277,9 +284,9 @@ void Logo::render() screen->clean(); // Dibuja los sprites - for (auto s : jailSprite) + for (auto sprite : jailSprite) { - s->render(); + sprite->render(); } sinceSprite->render(); diff --git a/source/logo.h b/source/logo.h index 2897146..521cc93 100644 --- a/source/logo.h +++ b/source/logo.h @@ -39,10 +39,11 @@ private: int counter; // Contador Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa - int initFade; // Tiempo del contador cuando inicia el fade a negro - int endLogo; // Tiempo del contador para terminar el logo - int postLogo; // Tiempo que dura el logo con el fade al maximo - int speed; // Velocidad de deslpazamiento de cada linea + int showSinceSprite_cm; // Tiempo del contador en el que empieza a verse el sprite de "SINCE 1998" + int initFade_cm; // Tiempo del contador cuando inicia el fade a negro + int endLogo_cm; // Tiempo del contador para terminar el logo + int postLogoDuration; // Tiempo que dura el logo con el fade al maximo + int speed; // Velocidad de desplazamiento de cada linea SDL_Point dest; // Posición X donde dibujar el logo // Actualiza las variables