Crea la infraestructura del StateManager para gestionar estados DEMO/LOGO con patrón de callbacks al Engine. Estructura lista para migración de lógica. ## Archivos Nuevos **source/state/state_manager.h:** - Declaración de clase StateManager - Forward declaration de Engine (patrón callback) - Métodos públicos: initialize(), update(), setState() - Métodos toggle: toggleDemoMode(), toggleDemoLiteMode(), toggleLogoMode() - Getters: getCurrentMode(), getPreviousMode(), is*ModeActive() - Métodos privados: performDemoAction(), randomizeOnDemoStart(), etc. - Miembros para timers, convergencia, flip detection, estado previo **source/state/state_manager.cpp:** - Implementación de constructor/destructor - initialize() con callback al Engine - Stubs de todos los métodos (TODO: migrar lógica completa) - Preparado para recibir ~600 líneas de lógica DEMO/LOGO ## Archivos Modificados **CMakeLists.txt:** - Agregado: source/state/*.cpp al glob de archivos fuente **source/engine.h:** - Agregado: #include "state/state_manager.h" - Agregado: std::unique_ptr<StateManager> state_manager_ - NOTA: Miembros de estado aún no removidos (pendiente migración) **source/engine.cpp:** - initialize(): Crea state_manager_ con `this` como callback - NOTA: Métodos DEMO/LOGO aún no migrados (pendiente) ## Estado Actual - ✅ Estructura del StateManager creada y compila - ✅ Patrón de callbacks al Engine configurado - ✅ CMakeLists actualizado - ⏳ Migración de lógica DEMO/LOGO: PENDIENTE (~600 líneas) - ⏳ Remoción de miembros duplicados en Engine: PENDIENTE ## Próximos Pasos (Fase 4b) 1. Migrar updateDemoMode() → StateManager::update() 2. Migrar performDemoAction() → StateManager (privado) 3. Migrar randomizeOnDemoStart() → StateManager (privado) 4. Migrar enterLogoMode() → StateManager (privado) 5. Migrar exitLogoMode() → StateManager (privado) 6. Migrar toggleGravityOnOff() → StateManager (privado) 7. Migrar setState() completo 8. Delegar toggle*Mode() desde Engine a StateManager 9. Remover miembros de estado duplicados en Engine 10. Commit final de Fase 4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.3 KiB
6.3 KiB