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:
@@ -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()
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <SDL2/SDL.h>
|
||||
#include "asset.h"
|
||||
#include "utils.h"
|
||||
#include "input.h"
|
||||
#include "../const.h"
|
||||
#include <vector>
|
||||
|
||||
@@ -19,6 +20,7 @@ private:
|
||||
SDL_Window *window; // Ventana de la aplicación
|
||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||
Asset *asset; // Objeto con el listado de recursos
|
||||
Input *input; // Objeto para leer las entradas de teclado o mando
|
||||
SDL_Texture *gameCanvas; // Textura para completar la ventana de juego hasta la pantalla completa
|
||||
options_t *options; // Variable con todas las opciones del programa
|
||||
|
||||
@@ -81,7 +83,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, options_t *options);
|
||||
Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input *input, options_t *options);
|
||||
|
||||
// Destructor
|
||||
~Screen();
|
||||
@@ -89,6 +91,9 @@ public:
|
||||
// Actualiza la lógica de la clase
|
||||
void update();
|
||||
|
||||
// Comprueba las entradas
|
||||
void checkInput();
|
||||
|
||||
// Limpia la pantalla
|
||||
void clean(color_t color = {0x00, 0x00, 0x00});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user