Añadido efecto básico de fade a la clase screen

This commit is contained in:
2022-09-15 21:08:14 +02:00
parent a0c60ec2e5
commit e2bb20052c
5 changed files with 94 additions and 217 deletions

View File

@@ -13,6 +13,10 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, options_t *options, i
gameCanvasWidth = gameInternalResX;
gameCanvasHeight = gameInternalResY;
fade = false;
fadeCounter = 0;
fadeLenght = 200;
// Define el color del borde para el modo de pantalla completa
borderColor = {0x00, 0x00, 0x00};
@@ -164,7 +168,7 @@ void Screen::switchVideoMode()
{
options->fullScreenMode = 0;
}
setVideoMode(options->fullScreenMode);
}
@@ -204,4 +208,65 @@ void Screen::switchBorder()
{
options->borderEnabled = !options->borderEnabled;
setVideoMode(0);
}
// Activa el fade
void Screen::setFade()
{
fade = true;
}
// Comprueba si ha terminado el fade
bool Screen::fadeEnded()
{
if (fade || fadeCounter > 0)
{
return false;
}
return true;
}
// Actualiza el fade
void Screen::updateFade()
{
if (!fade)
{
return;
}
fadeCounter++;
if (fadeCounter > fadeLenght)
{
fade = false;
fadeCounter = 0;
}
}
// Dibuja el fade
void Screen::renderFade()
{
if (!fade)
{
return;
}
const SDL_Rect rect = {0, 0, gameCanvasWidth, gameCanvasHeight};
color_t color = {0, 0, 0};
const float step = (float)fadeCounter / (float)fadeLenght;
const int alpha = 0 + (255 - 0) * step;
SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, alpha);
SDL_RenderFillRect(renderer, &rect);
}
// Actualiza los efectos
void Screen::updateFX()
{
updateFade();
}
// Dibuja los efectos
void Screen::renderFX()
{
renderFade();
}