#pragma once #include // Para unique_ptr, shared_ptr #include // Para string #include // Para move #include // 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; // Textura para la explosión std::vector animation; // Animación para la textura ExplosionTexture(int sz, std::shared_ptr tex, const std::vector& 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, const std::vector& 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 textures_; // Vector con las texturas a utilizar std::vector> 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 };