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:
@@ -124,6 +124,21 @@ class StateManager {
|
||||
*/
|
||||
void setLogoPreviousState(int theme, size_t texture_index, float shape_scale);
|
||||
|
||||
/**
|
||||
* @brief Entra al modo LOGO (público para permitir salto automático desde DEMO)
|
||||
* @param from_demo true si viene desde DEMO, false si es manual
|
||||
* @param current_screen_width Ancho de pantalla
|
||||
* @param current_screen_height Alto de pantalla
|
||||
* @param ball_count Número de bolas
|
||||
*/
|
||||
void enterLogoMode(bool from_demo, int current_screen_width, int current_screen_height, size_t ball_count);
|
||||
|
||||
/**
|
||||
* @brief Sale del modo LOGO (público para permitir salida manual)
|
||||
* @param return_to_demo true si debe volver a DEMO/DEMO_LITE
|
||||
*/
|
||||
void exitLogoMode(bool return_to_demo);
|
||||
|
||||
private:
|
||||
// === Referencia al Engine (callback) ===
|
||||
Engine* engine_;
|
||||
@@ -173,19 +188,4 @@ class StateManager {
|
||||
* @brief Toggle de gravedad ON/OFF (para DEMO)
|
||||
*/
|
||||
void toggleGravityOnOff();
|
||||
|
||||
/**
|
||||
* @brief Entra al modo LOGO
|
||||
* @param from_demo true si viene desde DEMO, false si es manual
|
||||
* @param current_screen_width Ancho de pantalla
|
||||
* @param current_screen_height Alto de pantalla
|
||||
* @param ball_count Número de bolas
|
||||
*/
|
||||
void enterLogoMode(bool from_demo, int current_screen_width, int current_screen_height, size_t ball_count);
|
||||
|
||||
/**
|
||||
* @brief Sale del modo LOGO
|
||||
* @param return_to_demo true si debe volver a DEMO/DEMO_LITE
|
||||
*/
|
||||
void exitLogoMode(bool return_to_demo);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user