#include "explosions.h" // Constructor Explosions::Explosions() { textures.clear(); explosions.clear(); } // Destructor Explosions::~Explosions() { for (auto explosion : explosions) { if (explosion) { delete explosion; } } } // Actualiza la lógica de la clase void Explosions::update() { for (auto explosion : explosions) { explosion->update(); } // Vacia el vector de elementos finalizados freeExplosions(); } // Dibuja el objeto en pantalla void Explosions::render() { for (auto explosion : explosions) { explosion->render(); } } // Añade texturas al objetp void Explosions::addTexture(int size, Texture *texture, std::vector *animation) { explosion_texture_t temp; temp.size = size; temp.texture = texture; temp.animation = animation; textures.push_back(temp); } // Añade una explosión void Explosions::add(int x, int y, int size) { const int index = getIndexBySize(size); AnimatedSprite *sprite = new AnimatedSprite(textures[index].texture, "", textures[index].animation); sprite->setPos(x, y); explosions.push_back(sprite); } // Vacia el vector de elementos finalizados void Explosions::freeExplosions() { if (explosions.empty() == false) { for (int i = explosions.size() - 1; i >= 0; --i) { if (explosions[i]->animationIsCompleted()) { delete explosions[i]; explosions.erase(explosions.begin() + i); } } } } // Busca una textura a partir del tamaño int Explosions::getIndexBySize(int size) { for (int i = 0; i < (int)textures.size();++i) { if (size == textures[i].size) { return i; } } return 0; }