El responsable de comprobar si se ha pulsado alguna tecla para cambiar el tamaño de la venta, el modo de pantalla completa o la activación de los shaders pasa a ser la clase screen

This commit is contained in:
2024-07-05 14:09:38 +02:00
parent 5e7212dfaa
commit 62f3c42e7b
14 changed files with 209 additions and 187 deletions

View File

@@ -8,13 +8,14 @@
#endif
// Constructor
Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, options_t *options)
Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input *input, options_t *options)
{
// Copia punteros
this->window = window;
this->renderer = renderer;
this->options = options;
this->asset = asset;
this->input = input;
this->options = options;
// Inicializa variables
SDL_GetRendererOutputSize(renderer, &windowWidth, &windowHeight);
@@ -80,7 +81,20 @@ void Screen::blit()
// Atenua la pantalla
doAttenuate();
#ifndef RASPI
#ifdef RASPI
// Vuelve a dejar el renderizador en modo normal
SDL_SetRenderTarget(renderer, nullptr);
// Borra el contenido previo
SDL_SetRenderDrawColor(renderer, borderColor.r, borderColor.g, borderColor.b, 0xFF);
SDL_RenderClear(renderer);
// Copia la textura de juego en el renderizador en la posición adecuada
SDL_RenderCopy(renderer, gameCanvas, nullptr, &dest);
// Muestra por pantalla el renderizador
SDL_RenderPresent(renderer);
#else
if (options->video.shaders)
{
shader::render();
@@ -100,19 +114,6 @@ void Screen::blit()
// Muestra por pantalla el renderizador
SDL_RenderPresent(renderer);
}
#else
// Vuelve a dejar el renderizador en modo normal
SDL_SetRenderTarget(renderer, nullptr);
// Borra el contenido previo
SDL_SetRenderDrawColor(renderer, borderColor.r, borderColor.g, borderColor.b, 0xFF);
SDL_RenderClear(renderer);
// Copia la textura de juego en el renderizador en la posición adecuada
SDL_RenderCopy(renderer, gameCanvas, nullptr, &dest);
// Muestra por pantalla el renderizador
SDL_RenderPresent(renderer);
#endif
}
@@ -200,7 +201,9 @@ void Screen::setVideoMode(int videoMode)
}
}
#ifndef RASPI
#ifdef RASPI
SDL_RenderSetLogicalSize(renderer, windowWidth, windowHeight);
#else
// Reinicia los shaders
if (options->video.shaders)
{
@@ -215,8 +218,6 @@ void Screen::setVideoMode(int videoMode)
{
SDL_RenderSetLogicalSize(renderer, windowWidth, windowHeight);
}
#else
SDL_RenderSetLogicalSize(renderer, windowWidth, windowHeight);
#endif
// Actualiza las opciones
@@ -369,6 +370,30 @@ void Screen::update()
updateShake();
}
// Comprueba las entradas
void Screen::checkInput()
{
if (input->checkInput(input_window_fullscreen, REPEAT_FALSE))
{
switchVideoMode();
}
else if (input->checkInput(input_window_dec_size, REPEAT_FALSE))
{
decWindowSize();
}
else if (input->checkInput(input_window_inc_size, REPEAT_FALSE))
{
incWindowSize();
}
else if (input->checkInput(input_video_shaders, REPEAT_FALSE))
{
switchShaders();
}
}
// Agita la pantalla
void Screen::shake()
{