From 8125e47d17932e68de16f28aa8b771a811afdc78 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 15 Sep 2022 22:06:10 +0200 Subject: [PATCH] Trabajando en el fade tipo spectrum --- source/screen.cpp | 95 ++++++++++++++++++++++++++++++++++++++++++++--- source/screen.h | 32 +++++++++++++--- 2 files changed, 117 insertions(+), 10 deletions(-) diff --git a/source/screen.cpp b/source/screen.cpp index 925bc1e..e54725d 100644 --- a/source/screen.cpp +++ b/source/screen.cpp @@ -13,9 +13,8 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, options_t *options, i gameCanvasWidth = gameInternalResX; gameCanvasHeight = gameInternalResY; - fade = false; - fadeCounter = 0; - fadeLenght = 200; + iniFade(); + iniSpectrumFade(); // Define el color del borde para el modo de pantalla completa borderColor = {0x00, 0x00, 0x00}; @@ -227,6 +226,31 @@ bool Screen::fadeEnded() return true; } +// Activa el spectrum fade +void Screen::setspectrumFade() +{ + spectrumFade = true; +} + +// Comprueba si ha terminado el spectrum fade +bool Screen::spectrumFadeEnded() +{ + if (spectrumFade || spectrumFadeCounter > 0) + { + return false; + } + + return true; +} + +// Inicializa las variables para el fade +void Screen::iniFade() +{ + fade = false; + fadeCounter = 0; + fadeLenght = 200; +} + // Actualiza el fade void Screen::updateFade() { @@ -238,8 +262,7 @@ void Screen::updateFade() fadeCounter++; if (fadeCounter > fadeLenght) { - fade = false; - fadeCounter = 0; + iniFade(); } } @@ -259,14 +282,76 @@ void Screen::renderFade() SDL_RenderFillRect(renderer, &rect); } +// Inicializa las variables para el fade spectrum +void Screen::iniSpectrumFade() +{ + spectrumFade = false; + spectrumFadeCounter = 0; + spectrumFadeLenght = 200; + + color_t c; + c = stringToColor("black"); + spectrumColor.push_back(c); + + c = stringToColor("blue"); + spectrumColor.push_back(c); + + c = stringToColor("red"); + spectrumColor.push_back(c); + + c = stringToColor("magenta"); + spectrumColor.push_back(c); + + c = stringToColor("green"); + spectrumColor.push_back(c); + + c = stringToColor("cyan"); + spectrumColor.push_back(c); + + c = stringToColor("yellow"); + spectrumColor.push_back(c); + + c = stringToColor("bright_white"); + spectrumColor.push_back(c); +} + +// Actualiza el spectrum fade +void Screen::updateSpectrumFade() +{ + if (!spectrumFade) + { + return; + } + + spectrumFadeCounter++; + if (spectrumFadeCounter > spectrumFadeLenght) + { + iniSpectrumFade(); + } +} + +// Dibuja el spectrum fade +void Screen::renderSpectrumFade() +{ + if (!spectrumFade) + { + return; + } + + const float step = (float)spectrumFadeCounter / (float)spectrumFadeLenght; + SDL_SetTextureColorMod(gameCanvas, 255, 0, 0); +} + // Actualiza los efectos void Screen::updateFX() { updateFade(); + updateSpectrumFade(); } // Dibuja los efectos void Screen::renderFX() { renderFade(); + renderSpectrumFade(); } \ No newline at end of file diff --git a/source/screen.h b/source/screen.h index a86235c..31fcedf 100644 --- a/source/screen.h +++ b/source/screen.h @@ -2,6 +2,7 @@ #include #include "utils.h" +#include #ifndef SCREEN_H #define SCREEN_H @@ -37,9 +38,16 @@ private: color_t borderColor; // Color del borde añadido a la textura de juego para rellenar la pantalla // EFECTOS - bool fade; // Indica si esta activo el efecto de fade - int fadeCounter; // Temporizador para el efecto de fade - int fadeLenght; // Duración del fade + bool fade; // Indica si esta activo el efecto de fade + int fadeCounter; // Temporizador para el efecto de fade + int fadeLenght; // Duración del fade + bool spectrumFade; // Indica si esta activo el efecto de fade spectrum + int spectrumFadeCounter; // Temporizador para el efecto de fade spectrum + int spectrumFadeLenght; // Duración del fade spectrum + std::vector spectrumColor; // Colores para el fade spectrum + + // Inicializa las variables para el fade + void iniFade(); // Actualiza el fade void updateFade(); @@ -47,6 +55,15 @@ private: // Dibuja el fade void renderFade(); + // Inicializa las variables para el fade spectrum + void iniSpectrumFade(); + + // Actualiza el spectrum fade + void updateSpectrumFade(); + + // Dibuja el spectrum fade + void renderSpectrumFade(); + public: // Constructor Screen(SDL_Window *window, SDL_Renderer *renderer, options_t *options, int gameInternalResX, int gameInternalResY); @@ -93,12 +110,17 @@ public: // Comprueba si ha terminado el fade bool fadeEnded(); + // Activa el spectrum fade + void setspectrumFade(); + + // Comprueba si ha terminado el spectrum fade + bool spectrumFadeEnded(); + // Actualiza los efectos void updateFX(); - //Dibuja los efectos + // Dibuja los efectos void renderFX(); - }; #endif