Files
jaildoctors_dilemma/source/game/gameplay/enemy_manager.cpp
2025-11-21 18:02:53 +01:00

50 lines
1.2 KiB
C++

#include "enemy_manager.hpp"
#include <algorithm> // Para std::ranges::any_of
#include "game/entities/enemy.hpp" // Para Enemy
#include "utils/utils.hpp" // Para checkCollision
// Añade un enemigo a la colección
void EnemyManager::addEnemy(std::shared_ptr<Enemy> enemy) {
enemies_.push_back(std::move(enemy));
}
// Elimina todos los enemigos
void EnemyManager::clear() {
enemies_.clear();
}
// Elimina el último enemigo de la colección
void EnemyManager::removeLastEnemy() {
if (!enemies_.empty()) {
enemies_.pop_back();
}
}
// Comprueba si no hay enemigos
auto EnemyManager::isEmpty() const -> bool {
return enemies_.empty();
}
// Actualiza todos los enemigos
void EnemyManager::update(float delta_time) {
for (const auto& enemy : enemies_) {
enemy->update(delta_time);
}
}
// Renderiza todos los enemigos
void EnemyManager::render() {
for (const auto& enemy : enemies_) {
enemy->render();
}
}
// Comprueba si hay colisión con algún enemigo
auto EnemyManager::checkCollision(SDL_FRect& rect) -> bool {
return std::ranges::any_of(enemies_, [&rect](const auto& enemy) {
return ::checkCollision(rect, enemy->getCollider());
});
}