84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "texture.h"
|
|
#include "utils.h"
|
|
|
|
// Tipos de fundido
|
|
#define FADE_FULLSCREEN 0
|
|
#define FADE_CENTER 1
|
|
#define FADE_RANDOM_SQUARE 2
|
|
#define FADE_VENETIAN 3
|
|
|
|
// Modos de fundido
|
|
#define FADE_IN 0
|
|
#define FADE_OUT 1
|
|
|
|
// Clase Fade
|
|
class Fade
|
|
{
|
|
private:
|
|
// Objetos y punteros
|
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
|
SDL_Texture *backbuffer; // Textura para usar como backbuffer con SDL_TEXTUREACCESS_TARGET
|
|
|
|
// Variables
|
|
Uint8 type; // Tipo de fade a realizar
|
|
Uint8 mode; // Modo de fade a realizar
|
|
Uint16 counter; // Contador interno
|
|
bool enabled; // Indica si el fade está activo
|
|
bool finished; // Indica si ha terminado la transición
|
|
Uint8 r, g, b, a; // Colores para el fade
|
|
SDL_Rect rect1; // Rectangulo usado para crear los efectos de transición
|
|
SDL_Rect rect2; // Rectangulo usado para crear los efectos de transición
|
|
int numSquaresWidth; // Cantidad total de cuadraditos en horizontal para el FADE_RANDOM_SQUARE
|
|
int numSquaresHeight; // Cantidad total de cuadraditos en vertical para el FADE_RANDOM_SQUARE
|
|
std::vector<SDL_Rect> square; // Vector con los indices de los cuadrados para el FADE_RANDOM_SQUARE
|
|
int fadeRandomSquaresDelay; // Duración entre cada pintado de cuadrados
|
|
int fadeRandomSquaresMult; // Cantidad de cuadrados que se pintaran cada vez
|
|
int postDuration; // Duración posterior del fade tras finalizar
|
|
int postCounter; // Contador para la duración posterior
|
|
|
|
// Inicializa las variables
|
|
void init();
|
|
|
|
// Limpia el backbuffer
|
|
void cleanBackbuffer(int r, int g, int b, int a);
|
|
|
|
public:
|
|
// Constructor
|
|
Fade(SDL_Renderer *renderer);
|
|
|
|
// Destructor
|
|
~Fade();
|
|
|
|
// Resetea algunas variables para volver a hacer el fade sin perder ciertos parametros
|
|
void reset();
|
|
|
|
// Pinta una transición en pantalla
|
|
void render();
|
|
|
|
// Actualiza las variables internas
|
|
void update();
|
|
|
|
// Activa el fade
|
|
void activate();
|
|
|
|
// Comprueba si ha terminado la transicion
|
|
bool hasEnded();
|
|
|
|
// Comprueba si está activo
|
|
bool isEnabled();
|
|
|
|
// Establece el tipo de fade
|
|
void setType(Uint8 type);
|
|
|
|
// Establece el modo de fade
|
|
void setMode(Uint8 mode);
|
|
|
|
// Establece el color del fade
|
|
void setColor(Uint8 r, Uint8 g, Uint8 b);
|
|
|
|
// Establece la duración posterior
|
|
void setPost(int value);
|
|
}; |