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:
@@ -85,6 +85,7 @@ set(APP_SOURCES
|
||||
source/game/gameplay/room_tracker.cpp
|
||||
source/game/gameplay/scoreboard.cpp
|
||||
source/game/gameplay/stats.cpp
|
||||
source/game/gameplay/tilemap_renderer.cpp
|
||||
|
||||
# Game - Scenes
|
||||
source/game/scenes/credits.cpp
|
||||
|
||||
Reference in New Issue
Block a user