forked from jaildesigner-jailgames/jaildoctors_dilemma
Fase 1: Refactorización de Room - Extracción de gestión de entidades
Extraída la gestión de enemigos e items de Room a managers dedicados, reduciendo las responsabilidades de la clase Room y mejorando la separación de concernimientos. Cambios principales: - Creado EnemyManager para gestionar enemigos (creación, update, render, colisión) - Creado ItemManager para gestionar items (creación, update, render, colisión, pickup) - Room ahora delega toda la gestión de entidades a estos managers - Room mantiene su interfaz pública sin cambios (retrocompatibilidad total) - Eliminados vectores enemies_ e items_ de Room (reemplazados por managers) Archivos nuevos: - source/game/gameplay/enemy_manager.hpp/cpp - source/game/gameplay/item_manager.hpp/cpp Archivos modificados: - source/game/gameplay/room.hpp/cpp - CMakeLists.txt Estado: - Compilación exitosa - Carga de assets verificada (325 assets OK) - Linters ejecutados (clang-tidy y cppcheck) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
45
source/game/gameplay/enemy_manager.hpp
Normal file
45
source/game/gameplay/enemy_manager.hpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#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;
|
||||
EnemyManager& operator=(const EnemyManager&) = delete;
|
||||
EnemyManager(EnemyManager&&) = delete;
|
||||
EnemyManager& operator=(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
|
||||
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
|
||||
};
|
||||
Reference in New Issue
Block a user