Reballats tots els .h i .cpp en la mateixa carpeta
This commit is contained in:
142
source/screen.h
Normal file
142
source/screen.h
Normal file
@@ -0,0 +1,142 @@
|
||||
#pragma once
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include "asset.h"
|
||||
#include "utils.h"
|
||||
#include "notify.h"
|
||||
#include "input.h"
|
||||
#include "const.h"
|
||||
#include <vector>
|
||||
|
||||
#define SCREEN_FILTER_NEAREST 0
|
||||
#define SCREEN_FILTER_LINEAL 1
|
||||
|
||||
#define SCREEN_VIDEO_MODE_WINDOW 0
|
||||
#define SCREEN_VIDEO_MODE_FULLSCREEN 1
|
||||
|
||||
class Screen
|
||||
{
|
||||
private:
|
||||
// Objetos y punteros
|
||||
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
|
||||
Notify *notify; // Pinta notificaciones en pantalla
|
||||
SDL_Texture *gameCanvas; // Textura para completar la ventana de juego hasta la pantalla completa
|
||||
options_t *options; // Opciones del programa
|
||||
|
||||
// Variables
|
||||
int windowWidth; // Ancho de la pantalla o ventana
|
||||
int windowHeight; // Alto de la pantalla o ventana
|
||||
int gameCanvasWidth; // Resolución interna del juego. Es el ancho de la textura donde se dibuja el juego
|
||||
int gameCanvasHeight; // Resolución interna del juego. Es el alto de la textura donde se dibuja el juego
|
||||
SDL_Rect dest; // Coordenadas donde se va a dibujar la textura del juego sobre la pantalla o ventana
|
||||
color_t borderColor; // Color del borde añadido a la textura de juego para rellenar la pantalla
|
||||
bool attenuateEffect; // Indica si la pantalla ha de estar atenuada
|
||||
Uint32 fpsTicks; // Ticks para contar los frames por segundo
|
||||
int fpsCounter; // Contador de frames por segundo
|
||||
int fps; // Frames calculados en el último segundo
|
||||
bool showInfo; // Indica si ha de mostrar/ocultar la información de la pantalla
|
||||
std::string infoResolution; // Texto con la informacion de la pantalla
|
||||
|
||||
struct effect_t
|
||||
{
|
||||
bool enabled; // Indica si el efecto está activo
|
||||
int counter; // Contador para el efecto
|
||||
int lenght; // Duración del efecto
|
||||
color_t color; // Color del efecto
|
||||
};
|
||||
|
||||
// Variables - Efectos
|
||||
effect_t flashEffect; // Variable para gestionar el efecto de flash
|
||||
|
||||
struct shake_t
|
||||
{
|
||||
int desp; // Pixels de desplazamiento para agitar la pantalla en el eje x
|
||||
int delay; // Retraso entre cada desplazamiento de la pantalla al agitarse
|
||||
int counter; // Contador para el retraso
|
||||
int lenght; // Cantidad de desplazamientos a realizar
|
||||
int remaining; // Cantidad de desplazamientos pendientes a realizar
|
||||
int origin; // Valor inicial de la pantalla para dejarla igual tras el desplazamiento
|
||||
} shakeEffect;
|
||||
|
||||
// Actualiza la logica para agitar la pantalla
|
||||
void updateShake();
|
||||
|
||||
// Actualiza y dibuja el efecto de flash en la pantalla
|
||||
void doFlash();
|
||||
|
||||
// Atenua la pantalla
|
||||
void doAttenuate();
|
||||
|
||||
// Calcula los frames por segundo
|
||||
void updateFPS();
|
||||
|
||||
// Muestra información por pantalla
|
||||
void displayInfo();
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input *input, options_t *options);
|
||||
|
||||
// Destructor
|
||||
~Screen();
|
||||
|
||||
// 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});
|
||||
|
||||
// Prepara para empezar a dibujar en la textura de juego
|
||||
void start();
|
||||
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
void blit();
|
||||
|
||||
// Establece el modo de video
|
||||
void setVideoMode(int videoMode);
|
||||
|
||||
// Camibia entre pantalla completa y ventana
|
||||
void switchVideoMode();
|
||||
|
||||
// Cambia el tamaño de la ventana
|
||||
void setWindowSize(int size);
|
||||
|
||||
// Reduce el tamaño de la ventana
|
||||
void decWindowSize();
|
||||
|
||||
// Aumenta el tamaño de la ventana
|
||||
void incWindowSize();
|
||||
|
||||
// Cambia el color del borde
|
||||
void setBorderColor(color_t color);
|
||||
|
||||
// Cambia el tipo de mezcla
|
||||
void setBlendMode(SDL_BlendMode blendMode);
|
||||
|
||||
// Agita la pantalla
|
||||
void shake();
|
||||
|
||||
// Pone la pantalla de color
|
||||
void flash(color_t color, int lenght);
|
||||
|
||||
// Activa/desactiva los shaders
|
||||
void switchShaders();
|
||||
|
||||
// Atenua la pantalla
|
||||
void attenuate(bool value);
|
||||
|
||||
// Muestra una notificación de texto por pantalla;
|
||||
void showNotification(std::string text1 = "", std::string text2 = "", int icon = -1);
|
||||
|
||||
// Indica si hay alguna notificación activa en pantalla
|
||||
bool notificationsAreActive();
|
||||
|
||||
// Obtiene el puntero al renderizador
|
||||
SDL_Renderer *getRenderer();
|
||||
};
|
||||
Reference in New Issue
Block a user