forked from jaildesigner-jailgames/jaildoctors_dilemma
## Cambios principales ### Nuevo componente: CollisionMap - **collision_map.hpp/cpp**: Nueva clase que encapsula toda la lógica de detección de colisiones - Responsabilidades extraídas de Room: - Determinación de tipos de tile (getTile) - Generación de geometría de colisión (superficies, rampas, conveyor belts) - Queries de colisión para Player y entidades - 14 métodos de detección de colisión - Getters para visualización debug ### Modificaciones en Room - **room.hpp**: - Añadido CollisionMap como miembro (unique_ptr) - Removidos 7 vectores de geometría de colisión - Removidos 13 métodos privados de generación de geometría - Añadido getTile(int index) para soporte de animated tiles - Añadido destructor explícito (necesario para unique_ptr con forward declaration) - **room.cpp**: - Constructor: Inicializa CollisionMap con tile_map, tile_set_width, conveyor_belt_direction - Delegación: Todos los métodos de colisión ahora llaman a collision_map_ - Restaurados métodos de animated tiles (openTheJail, setAnimatedTiles, updateAnimatedTiles, renderAnimatedTiles) - Actualizado openTheJail() para usar enemy_manager_ en lugar de enemies_ - Debug visualization actualizada para usar getters de CollisionMap ### Build system - **CMakeLists.txt**: Añadido collision_map.cpp a las fuentes del proyecto ## Métricas - **Código eliminado de Room**: ~465 líneas de lógica de colisión - **Nuevo CollisionMap**: 487 líneas (collision_map.cpp) - **Reducción neta en room.cpp**: Significativa mejora en cohesión ## Verificación - ✅ Compilación exitosa sin errores - ✅ Juego inicia y carga recursos correctamente - ✅ clang-tidy: Sin warnings en código de usuario - ✅ cppcheck: Sin issues reales (solo false positive en utils.hpp) ## Próximos pasos - Fase 3: Extracción del sistema de renderizado de tilemap - Fase 4: Extracción del parseo de archivos - Fase 5: Limpieza final y reducción de Room a coordinador ligero 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>