60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "common/asset.h"
|
|
#include "common/screen.h"
|
|
#include "common/sprite.h"
|
|
#include "const.h"
|
|
|
|
// Modos de funcionamiento para el tileado de fondo
|
|
#define TILED_MODE_CIRCLE 0
|
|
#define TILED_MODE_DIAGONAL 1
|
|
#define TILED_MODE_RANDOM 2
|
|
#define TILED_MODE_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:
|
|
// Objetos y punteros
|
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
|
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
|
|
SDL_Rect window; // Ventana visible para la textura de fondo del titulo
|
|
SDL_Texture *canvas; // Textura donde dibujar el fondo formado por tiles
|
|
|
|
// Variables
|
|
SDL_Rect pos; // Posición y tamaña del mosaico
|
|
int counter; // Contador
|
|
int mode; // Tipo de movimiento del mosaico
|
|
float sin[360]; // Vector con los valores del seno precalculados
|
|
int tileWidth; // Ancho del tile
|
|
int tileHeight; // Alto del tile
|
|
|
|
// Inicializa las variables
|
|
void init();
|
|
|
|
// Rellena la textura con el contenido
|
|
void fillTexture();
|
|
|
|
public:
|
|
// Constructor
|
|
Tiledbg(SDL_Renderer *renderer, Asset *asset, SDL_Rect pos, int mode);
|
|
|
|
// Destructor
|
|
~Tiledbg();
|
|
|
|
// Pinta la clase en pantalla
|
|
void render();
|
|
|
|
// Actualiza la lógica de la clase
|
|
void update();
|
|
|
|
// Recarga las texturas
|
|
void reLoad();
|
|
}; |