From 8f6b5cefa89f085339eb2c05547968d1f9335cfc Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 19 Jun 2024 08:19:14 +0200 Subject: [PATCH] Actualizado el FADE_FULLSCREEN de la clase fade --- source/const.h | 1 + source/fade.cpp | 74 ++++++++++++++++++++++++++++++++---------------- source/title.cpp | 4 +-- 3 files changed, 52 insertions(+), 27 deletions(-) diff --git a/source/const.h b/source/const.h index f4aab55..1e41b3b 100644 --- a/source/const.h +++ b/source/const.h @@ -73,5 +73,6 @@ const color_t difficultyEasyColor = {75, 105, 47}; const color_t difficultyNormalColor = {255, 122, 0}; const color_t difficultyHardColor = {118, 66, 138}; const color_t flashColor = {0xFF, 0xFF, 0xFF}; +const color_t fadeColor = {0x17, 0x17, 0x26}; #endif \ No newline at end of file diff --git a/source/fade.cpp b/source/fade.cpp index f0bffe2..13b6d26 100644 --- a/source/fade.cpp +++ b/source/fade.cpp @@ -44,32 +44,15 @@ void Fade::render() switch (type) { case FADE_FULLSCREEN: - for (int i = 0; i < 256; i += 4) - { - // Dibujamos sobre el renderizador - SDL_SetRenderTarget(renderer, nullptr); + { + SDL_SetTextureAlphaMod(backbuffer, std::min(counter * 4, 255)); + SDL_RenderCopy(renderer, backbuffer, nullptr, nullptr); - // Copia el backbuffer con la imagen que había al renderizador - SDL_RenderCopy(renderer, backbuffer, nullptr, nullptr); - - SDL_SetRenderDrawColor(renderer, r, g, b, i); - SDL_RenderFillRect(renderer, &rect1); - - // Vuelca el renderizador en pantalla - SDL_RenderPresent(renderer); - } - - // Deja todos los buffers del mismo color - SDL_SetRenderTarget(renderer, backbuffer); - SDL_SetRenderDrawColor(renderer, r, g, b, 255); - SDL_RenderClear(renderer); - - SDL_SetRenderTarget(renderer, nullptr); - SDL_SetRenderDrawColor(renderer, r, g, b, 255); - SDL_RenderClear(renderer); break; + } case FADE_CENTER: + { SDL_SetRenderDrawColor(renderer, r, g, b, 64); for (int i = 0; i < counter; i++) @@ -81,11 +64,11 @@ void Fade::render() SDL_RenderFillRect(renderer, &rect2); } - if ((counter * 4) > param->gameHeight) - finished = true; break; + } case FADE_RANDOM_SQUARE: + { for (Uint16 i = 0; i < 50; i++) { // Crea un color al azar @@ -112,6 +95,7 @@ void Fade::render() SDL_Delay(100); } break; + } default: break; @@ -132,6 +116,31 @@ void Fade::update() if (enabled) { counter++; + + switch (type) + { + case FADE_FULLSCREEN: + if (counter >= 255 / 4) + { + finished = true; + } + break; + + case FADE_CENTER: + if ((counter * 4) > param->gameHeight) + { + finished = true; + } + break; + + case FADE_RANDOM_SQUARE: + break; + } + + if (finished) + { + enabled = false; + } } } @@ -145,18 +154,33 @@ void Fade::activate() switch (type) { case FADE_FULLSCREEN: - rect1 = {0, 0, param->gameWidth, param->gameHeight}; + { + // Dibujamos sobre el backbuffer + SDL_Texture *temp = SDL_GetRenderTarget(renderer); + SDL_SetRenderTarget(renderer, backbuffer); + + // Pintamos la textura con el color del fade + SDL_SetRenderDrawColor(renderer, r, g, b, 255); + SDL_RenderClear(renderer); + + // Vuelve a dejar el renderizador como estaba + SDL_SetRenderTarget(renderer, temp); break; + } case FADE_CENTER: + { rect1 = {0, 0, param->gameWidth, 0}; rect2 = {0, 0, param->gameWidth, 0}; break; + } case FADE_RANDOM_SQUARE: + { rect1 = {0, 0, 32, 32}; break; } + } } // Comprueba si está activo diff --git a/source/title.cpp b/source/title.cpp index 1b2f6c0..8cd5421 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -73,8 +73,8 @@ void Title::init() postFade = 0; ticks = 0; ticksSpeed = 15; - fade->setColor(0x17, 0x17, 0x26); - fade->setType(FADE_FULLSCREEN); + fade->setColor(fadeColor.r, fadeColor.g, fadeColor.b); + fade->setType(FADE_RANDOM_SQUARE); demo = true; // Pone valores por defecto a las opciones de control