#pragma once #include // for shared_ptr, unique_ptr #include // for string #include // for vector class AnimatedSprite; class Texture; 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 // Constructor ExplosionTexture(int sz, std::shared_ptr tex, const std::vector &anim) : size(sz), texture(tex), animation(anim) {} }; // Clase explosions class Explosions { private: // Variables std::vector textures_; // Vector con las texturas a utilizar std::vector> explosions_; // Lista con todas las explosiones // Vacia el vector de elementos finalizados void freeExplosions(); // Busca una textura a partir del tamaño int getIndexBySize(int size); public: // Constructor Explosions(); // Destructor ~Explosions(); // 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); };