47 lines
2.0 KiB
C++
47 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include <memory> // Para unique_ptr, shared_ptr
|
|
#include <string> // Para string
|
|
#include <utility> // Para move
|
|
#include <vector> // Para vector
|
|
|
|
#include "animated_sprite.hpp" // Para AnimatedSprite
|
|
|
|
class Texture;
|
|
|
|
// --- Estructura ExplosionTexture: almacena información de una textura de explosión ---
|
|
struct ExplosionTexture {
|
|
int size; // Tamaño de la explosión
|
|
std::shared_ptr<Texture> texture; // Textura para la explosión
|
|
std::vector<std::string> animation; // Animación para la textura
|
|
|
|
ExplosionTexture(int sz, std::shared_ptr<Texture> tex, const std::vector<std::string>& anim)
|
|
: size(sz),
|
|
texture(std::move(tex)),
|
|
animation(anim) {}
|
|
};
|
|
|
|
// --- Clase Explosions: gestor de explosiones ---
|
|
class Explosions {
|
|
public:
|
|
// --- Constructor y destructor ---
|
|
Explosions() = default; // Constructor por defecto
|
|
~Explosions() = default; // Destructor por defecto
|
|
|
|
// --- Métodos principales ---
|
|
void update(float delta_time); // Actualiza la lógica de la clase (time-based)
|
|
void render(); // Dibuja el objeto en pantalla
|
|
|
|
// --- Configuración ---
|
|
void addTexture(int size, const std::shared_ptr<Texture>& texture, const std::vector<std::string>& animation); // Añade texturas al objeto
|
|
void add(int x, int y, int size); // Añade una explosión
|
|
|
|
private:
|
|
// --- Variables de estado ---
|
|
std::vector<ExplosionTexture> textures_; // Vector con las texturas a utilizar
|
|
std::vector<std::unique_ptr<AnimatedSprite>> explosions_; // Lista con todas las explosiones
|
|
|
|
// --- Métodos internos ---
|
|
void freeExplosions(); // Vacía el vector de elementos finalizados
|
|
auto getIndexBySize(int size) -> int; // Busca una textura a partir del tamaño
|
|
}; |