Files
vibe3_physics/source/defines.h
Sergio Valor e655c643a5 Refactor fase 3: Extraer UIManager de Engine
Migra toda la lógica de interfaz de usuario (HUD, FPS, debug, notificaciones)
a UIManager siguiendo el principio de Single Responsibility (SRP).

## Archivos Nuevos

**source/ui/ui_manager.h:**
- Declaración de clase UIManager
- Gestión de HUD debug, FPS counter, notificaciones, texto obsoleto
- Constructor/destructor con gestión de TextRenderers y Notifier
- Métodos públicos: initialize(), update(), render(), toggleDebug()
- Getters: isDebugActive(), getCurrentFPS(), isTextObsoleteVisible()

**source/ui/ui_manager.cpp:**
- Implementación completa de UI (~250 líneas)
- renderDebugHUD(): Renderiza toda la información de debug
- renderObsoleteText(): Sistema antiguo de texto (DEPRECATED)
- update(): Calcula FPS y actualiza notificaciones
- Gestión de 3 TextRenderers (display, debug, notifier)
- Integración con Notifier para mensajes tipo iOS/Android

## Archivos Modificados

**source/defines.h:**
- Movido: enum class AppMode (antes estaba en engine.h)
- Ahora AppMode es global y accesible para todos los componentes

**source/engine.h:**
- Agregado: #include "ui/ui_manager.h"
- Agregado: std::unique_ptr<UIManager> ui_manager_
- Removido: enum class AppMode (movido a defines.h)
- Removido: bool show_debug_, bool show_text_
- Removido: TextRenderer text_renderer_, text_renderer_debug_, text_renderer_notifier_
- Removido: Notifier notifier_
- Removido: std::string text_, int text_pos_, Uint64 text_init_time_
- Removido: Uint64 fps_last_time_, int fps_frame_count_, int fps_current_
- Removido: std::string fps_text_, vsync_text_
- Removidos métodos privados: setText(), gravityDirectionToString()

**source/engine.cpp:**
- initialize(): Crea ui_manager_ con renderer y theme_manager
- update(): Delega a ui_manager_->update()
- render(): Reemplaza 90+ líneas de debug HUD con ui_manager_->render()
- toggleDebug(): Delega a ui_manager_->toggleDebug()
- toggleVSync(): Actualiza texto con ui_manager_->updateVSyncText()
- showNotificationForAction(): Delega a ui_manager_->showNotification()
- updatePhysicalWindowSize(): Simplificado, delega a ui_manager_
- toggleIntegerScaling(): Usa ui_manager_ en lugar de texto obsoleto
- toggleShapeModeInternal(): Usa ui_manager_->showNotification()
- activateShapeInternal(): Usa ui_manager_->showNotification()
- Removidos métodos completos: setText() (~27 líneas), gravityDirectionToString()
- Removidas ~90 líneas de renderizado debug manual
- Removidas ~65 líneas de gestión de TextRenderers/Notifier

## Resultado

- Engine.cpp reducido de ~1950 → ~1700 líneas (-250 líneas, -12.8%)
- UIManager: 250 líneas de lógica UI separada
- Separación clara: Engine coordina, UIManager renderiza UI
- AppMode ahora es enum global en defines.h
- 100% funcional: Compila sin errores ni warnings
- Preparado para Fase 4 (StateManager)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 12:15:54 +02:00

19 KiB