138 lines
3.8 KiB
C++
138 lines
3.8 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "asset.h"
|
|
#include "notify.h"
|
|
#include "utils.h"
|
|
#include <vector>
|
|
|
|
#ifndef SCREEN_H
|
|
#define SCREEN_H
|
|
|
|
#define FILTER_NEAREST 0
|
|
#define FILTER_LINEAL 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
|
|
SDL_Texture *gameCanvas; // Textura para completar la ventana de juego hasta la pantalla completa
|
|
options_t *options; // Variable con todas las opciones del programa
|
|
Notify *notify; // Dibuja notificaciones por pantalla
|
|
|
|
// 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
|
|
int borderWidth; // Anchura del borde
|
|
int borderHeight; // Anltura del borde
|
|
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 notifyActive; // Indica si hay notificaciones activas
|
|
int notificationLogicalWidth; // Ancho lógico de las notificaciones en relación al tamaño de pantalla
|
|
int notificationLogicalHeight; // Alto lógico de las notificaciones en relación al tamaño de pantalla
|
|
|
|
// Variables - Efectos
|
|
bool fade; // Indica si esta activo el efecto de fade
|
|
int fadeCounter; // Temporizador para el efecto de fade
|
|
int fadeLenght; // Duración del fade
|
|
bool spectrumFade; // Indica si esta activo el efecto de fade spectrum
|
|
int spectrumFadeCounter; // Temporizador para el efecto de fade spectrum
|
|
int spectrumFadeLenght; // Duración del fade spectrum
|
|
std::vector<color_t> spectrumColor; // Colores para el fade spectrum
|
|
|
|
// Inicializa las variables para el fade
|
|
void iniFade();
|
|
|
|
// Actualiza el fade
|
|
void updateFade();
|
|
|
|
// Dibuja el fade
|
|
void renderFade();
|
|
|
|
// Inicializa las variables para el fade spectrum
|
|
void iniSpectrumFade();
|
|
|
|
// Actualiza el spectrum fade
|
|
void updateSpectrumFade();
|
|
|
|
// Dibuja el spectrum fade
|
|
void renderSpectrumFade();
|
|
|
|
// Dibuja las notificaciones
|
|
void renderNotifications();
|
|
|
|
// Establece el tamaño de las notificaciones
|
|
void setNotificationSize();
|
|
|
|
public:
|
|
// Constructor
|
|
Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, options_t *options);
|
|
|
|
// Destructor
|
|
~Screen();
|
|
|
|
// 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);
|
|
|
|
// Cambia el color del borde
|
|
void setBorderColor(color_t color);
|
|
|
|
// Cambia el tipo de mezcla
|
|
void setBlendMode(SDL_BlendMode blendMode);
|
|
|
|
// Establece el tamaño del borde
|
|
void setBorderSize(float s);
|
|
|
|
// Establece si se ha de ver el borde en el modo ventana
|
|
void setBorderEnabled(bool value);
|
|
|
|
// Cambia entre borde visible y no visible
|
|
void switchBorder();
|
|
|
|
// Activa el fade
|
|
void setFade();
|
|
|
|
// Comprueba si ha terminado el fade
|
|
bool fadeEnded();
|
|
|
|
// Activa el spectrum fade
|
|
void setspectrumFade();
|
|
|
|
// Comprueba si ha terminado el spectrum fade
|
|
bool spectrumFadeEnded();
|
|
|
|
// Actualiza los efectos
|
|
void updateFX();
|
|
|
|
// Dibuja los efectos
|
|
void renderFX();
|
|
|
|
// Actualiza el notificador
|
|
void updateNotifier();
|
|
|
|
// Muestra una notificación de texto por pantalla;
|
|
void showNotification(std::string text);
|
|
};
|
|
|
|
#endif
|