Refactor fase 8: Migrar lógica DEMO/LOGO a StateManager

Implementación:
- StateManager::update() ahora maneja timers y triggers DEMO/LOGO
- Detección de flips de PNG_SHAPE migrada completamente
- Callbacks temporales en Engine para acciones complejas
- enterLogoMode() y exitLogoMode() públicos para transiciones automáticas
- Toggle methods en Engine delegados a StateManager

Callbacks implementados (temporal para Fase 9):
- Engine::performLogoAction()
- Engine::executeDemoAction()
- Engine::executeRandomizeOnDemoStart()
- Engine::executeToggleGravityOnOff()
- Engine::executeEnterLogoMode()
- Engine::executeExitLogoMode()

TODO Fase 9:
- Eliminar callbacks moviendo lógica completa a StateManager
- Limpiar duplicación de estado entre Engine y StateManager

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-11 21:19:14 +02:00
parent 83ea03fda3
commit 01d1ebd2a3
4 changed files with 310 additions and 129 deletions

View File

@@ -70,6 +70,17 @@ class Engine {
void toggleDemoLiteMode();
void toggleLogoMode();
// === Métodos públicos para StateManager (callbacks) ===
// NOTA FASE 8: StateManager necesita llamar a Engine para ejecutar acciones
// que requieren acceso a múltiples componentes (SceneManager, ThemeManager, etc.)
// TODO FASE 9: Mover lógica completa a StateManager eliminando estos callbacks
void performLogoAction(bool logo_waiting_for_flip);
void executeDemoAction(bool is_lite);
void executeRandomizeOnDemoStart(bool is_lite);
void executeToggleGravityOnOff();
void executeEnterLogoMode(size_t ball_count);
void executeExitLogoMode();
private:
// === Componentes del sistema (Composición) ===
std::unique_ptr<InputHandler> input_handler_; // Manejo de entradas SDL