Añadido efecto de atenuación a la clase screen

Al pausar el juego se atenua la pantalla
This commit is contained in:
2024-06-30 15:27:06 +02:00
parent addc8241ab
commit 8340bdfe32
4 changed files with 44 additions and 4 deletions

View File

@@ -36,6 +36,7 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, options
shakeEffect.lenght = 8;
shakeEffect.remaining = 0;
shakeEffect.origin = 0;
attenuateEffect = false;
iniFade();
@@ -74,6 +75,9 @@ void Screen::blit()
// Actualiza y dibuja el efecto de flash en la pantalla
doFlash();
// Atenua la pantalla
doAttenuate();
if (options->video.shaders)
{
shader::render();
@@ -402,9 +406,28 @@ void Screen::doFlash()
}
}
// Atenua la pantalla
void Screen::doAttenuate()
{
if (attenuateEffect)
{
SDL_Texture *temp = SDL_GetRenderTarget(renderer);
SDL_SetRenderTarget(renderer, gameCanvas);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 64);
SDL_RenderFillRect(renderer, nullptr);
SDL_SetRenderTarget(renderer, temp);
}
}
// Activa/desactiva los shaders
void Screen::switchShaders()
{
options->video.shaders = !options->video.shaders;
setVideoMode(options->video.mode);
}
// Atenua la pantalla
void Screen::attenuate(bool value)
{
attenuateEffect = value;
}