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>
70 KiB
70 KiB