#pragma once #include // Para unique_ptr, shared_ptr #include // Para string #include // Para vector #include "animated_sprite.h" // Para AnimatedSprite class Texture; // Estructura para almacenar la 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(tex), animation(anim) {} }; // Clase Explosions class Explosions { public: // Constructor y destructor Explosions() = default; ~Explosions() = default; // Actualiza la lógica de la clase void update(); // Dibuja el objeto en pantalla void render(); // Añade texturas al objeto void addTexture(int size, std::shared_ptr texture, const std::vector &animation); // Añade una explosión void add(int x, int y, int size); private: // Vector con las texturas a utilizar std::vector textures_; // Lista con todas las explosiones std::vector> explosions_; // Vacia el vector de elementos finalizados void freeExplosions(); // Busca una textura a partir del tamaño int getIndexBySize(int size); };