46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
#include <memory> // Para shared_ptr
|
|
#include <vector> // Para vector
|
|
|
|
class Enemy;
|
|
|
|
/**
|
|
* @brief Gestor de enemigos de una habitación
|
|
*
|
|
* Responsabilidades:
|
|
* - Almacenar y gestionar la colección de enemigos
|
|
* - Actualizar todos los enemigos
|
|
* - Renderizar todos los enemigos
|
|
* - Detectar colisiones con enemigos
|
|
*/
|
|
class EnemyManager {
|
|
public:
|
|
EnemyManager() = default;
|
|
~EnemyManager() = default;
|
|
|
|
// Prohibir copia y movimiento para evitar duplicación accidental
|
|
EnemyManager(const EnemyManager&) = delete;
|
|
auto operator=(const EnemyManager&) -> EnemyManager& = delete;
|
|
EnemyManager(EnemyManager&&) = delete;
|
|
auto operator=(EnemyManager&&) -> EnemyManager& = delete;
|
|
|
|
// Gestión de enemigos
|
|
void addEnemy(std::shared_ptr<Enemy> enemy); // Añade un enemigo a la colección
|
|
void clear(); // Elimina todos los enemigos
|
|
void removeLastEnemy(); // Elimina el último enemigo de la colección
|
|
[[nodiscard]] auto isEmpty() const -> bool; // Comprueba si no hay enemigos
|
|
|
|
// Actualización y renderizado
|
|
void update(float delta_time); // Actualiza todos los enemigos
|
|
void render(); // Renderiza todos los enemigos
|
|
|
|
// Detección de colisiones
|
|
auto checkCollision(SDL_FRect& rect) -> bool; // Comprueba si hay colisión con algún enemigo
|
|
|
|
private:
|
|
std::vector<std::shared_ptr<Enemy>> enemies_; // Colección de enemigos
|
|
};
|