#pragma once #include // for SDL_Rect #include // for SDL_Renderer, SDL_Texture #include // for string, basic_string // 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 SDL_Rect window_; // Ventana visible para la textura de fondo del titulo SDL_Texture *canvas_; // Textura donde dibujar el fondo formado por tiles // Variables std::string texture_path_; // Fichero para usar en la textura 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 tile_width_; // Ancho del tile int tile_height_; // Alto del tile // Inicializa las variables void init(); // Rellena la textura con el contenido void fillTexture(); public: // Constructor Tiledbg(std::string texture_path, 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(); };