forked from jaildesigner-jailgames/jaildoctors_dilemma
Fase 3: Refactorización de Room - Extracción del sistema de renderizado de tilemap
## Cambios principales ### Nuevo componente: TilemapRenderer - **tilemap_renderer.hpp/cpp**: Nueva clase que encapsula el renderizado del mapa de tiles - Responsabilidades extraídas de Room: - Renderizado del tilemap estático - Gestión de tiles animados (conveyor belts) - Actualización de animaciones basadas en tiempo - Debug visualization de colisiones (en modo DEBUG) - Gestión de map_surface y time_accumulator ### Modificaciones en Room - **room.hpp**: - Añadido TilemapRenderer como miembro (unique_ptr) - Removida estructura AnimatedTile (ahora privada en TilemapRenderer) - Removidos: map_surface_, animated_tiles_, time_accumulator_, CONVEYOR_FRAME_DURATION - Removidos 4 métodos privados de renderizado: fillMapTexture, setAnimatedTiles, updateAnimatedTiles, renderAnimatedTiles - **room.cpp**: - Constructor: Inicializa TilemapRenderer con tile_map, tile_set_width, surface, bg_color, conveyor_belt_direction - Constructor: Llama a tilemap_renderer_->initialize(collision_map_) - Delegación: renderMap() llama a tilemap_renderer_->render() - Delegación: update() llama a tilemap_renderer_->update(delta_time) - Delegación: setPaused() llama a tilemap_renderer_->setPaused(value) - Removida inicialización de time_accumulator_ - Eliminados ~95 líneas de código de renderizado (incluyendo debug lines) ### Mejoras en CollisionMap - **collision_map.hpp/cpp**: - Marcados getTile(SDL_FPoint) y getTile(int) como const (const correctness) - Permite uso desde TilemapRenderer con puntero const ### Build system - **CMakeLists.txt**: Añadido tilemap_renderer.cpp a las fuentes del proyecto ## Métricas - **Código eliminado de Room**: ~95 líneas de lógica de renderizado de tilemap - **Nuevo TilemapRenderer**: 208 líneas (tilemap_renderer.cpp) - **Reducción en room.cpp**: Continúa la mejora en cohesión y separación de responsabilidades ## Verificación - ✅ Compilación exitosa sin errores - ✅ Juego inicia y renderiza correctamente - ✅ clang-tidy: 1 warning (naming style) corregido - ✅ cppcheck: 1 suggestion (const correctness) aplicado - ✅ Const correctness mejorada en CollisionMap ## Próximos pasos - Fase 4: Extracción del parseo de archivos (RoomLoader) - 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>
This commit is contained in:
@@ -26,13 +26,13 @@ void CollisionMap::initializeSurfaces() {
|
||||
}
|
||||
|
||||
// Devuelve el tipo de tile que hay en ese pixel
|
||||
auto CollisionMap::getTile(SDL_FPoint point) -> Tile {
|
||||
auto CollisionMap::getTile(SDL_FPoint point) const -> Tile {
|
||||
const int POS = ((point.y / TILE_SIZE) * MAP_WIDTH) + (point.x / TILE_SIZE);
|
||||
return getTile(POS);
|
||||
}
|
||||
|
||||
// Devuelve el tipo de tile que hay en ese indice
|
||||
auto CollisionMap::getTile(int index) -> Tile {
|
||||
auto CollisionMap::getTile(int index) const -> Tile {
|
||||
const bool ON_RANGE = (index > -1) && (index < (int)tile_map_.size());
|
||||
|
||||
if (ON_RANGE) {
|
||||
|
||||
Reference in New Issue
Block a user