Files
coffee_crisis_arcade_edition/source/tiled_bg.h
Sergio Valor 787cb6366f Pasaeta de include-what-you-use
Acabada de perfilar la classe PathSprite
Menjeades declaracions de utils.h als fitxers que toca
2024-10-28 20:45:24 +01:00

58 lines
1.5 KiB
C++

#pragma once
#include <SDL2/SDL_rect.h> // Para SDL_Rect
#include <SDL2/SDL_render.h> // Para SDL_Renderer, SDL_Texture
// Modos de funcionamiento para el tileado de fondo
enum class TiledBGMode : int
{
CIRCLE = 0,
DIAGONAL = 1,
RANDOM = 2,
STATIC = 3,
};
/*
Esta clase dibuja un tileado de fondo. Para ello se sirve de una textura "canvas", que rellena con los tiles.
El rectangulo "window" recorre la textura de diferentes formas para generar el efecto de movimiento de la
textura en pantalla
*/
// Clase TiledBG
class TiledBG
{
private:
// Constantes
static constexpr int TILE_WIDTH_ = 64; // Ancho del tile
static constexpr int TILE_HEIGHT_ = 64; // Alto del tile
// Objetos y punteros
SDL_Renderer *renderer_; // El renderizador de la ventana
SDL_Texture *canvas_; // Textura donde dibujar el fondo formado por tiles
// Variables
SDL_Rect pos_; // Posición y tamaño del mosaico
SDL_Rect window_; // Ventana visible para la textura de fondo del titulo
int counter_ = 0; // Contador
TiledBGMode mode_; // Tipo de movimiento del mosaico
double sin_[360]; // Vector con los valores del seno precalculados
// Rellena la textura con el contenido
void fillTexture();
public:
// Constructor
TiledBG(SDL_Rect pos, TiledBGMode mode);
// Destructor
~TiledBG();
// Pinta la clase en pantalla
void render();
// Actualiza la lógica de la clase
void update();
// Recarga las texturas
void reLoad();
};