Añadido efecto de atenuación a la clase screen
Al pausar el juego se atenua la pantalla
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user