Files
coffee_crisis_arcade_edition/source/fade.h

85 lines
2.4 KiB
C++

#pragma once
#include <SDL2/SDL.h>
#include "common/texture.h"
#include "common/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
param_t *param; // Puntero con todos los parametros del programa
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, param_t *param);
// 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);
};