fix: Preservar SimulationMode y mejorar Debug HUD
CAMBIOS: - Debug HUD reorganizado en layout de 2 columnas (LEFT/RIGHT, sin centro) - Añadidos getters públicos en Engine para info de sistema - changeScenario() ahora preserva el SimulationMode actual - Inicialización de pelotas según modo (PHYSICS/SHAPE/BOIDS) - Eliminada duplicación de logo_entered_manually_ (ahora en StateManager) ARCHIVOS MODIFICADOS: - engine.h: Añadidos 8 getters públicos para UIManager - engine.cpp: changeScenario() pasa current_mode_ a SceneManager - scene_manager.h: changeScenario() acepta parámetro SimulationMode - scene_manager.cpp: Inicialización según modo (RULES.md líneas 23-26) - ui_manager.h: render() acepta Engine* y renderDebugHUD() actualizado - ui_manager.cpp: Debug HUD con columnas LEFT (sistema) y RIGHT (física) REGLAS.md IMPLEMENTADO: ✅ Líneas 23-26: Inicialización diferenciada por modo - PHYSICS: Top, 75% distribución central en X, velocidades aleatorias - SHAPE: Centro de pantalla, sin velocidad inicial - BOIDS: Posiciones y velocidades aleatorias ✅ Líneas 88-96: Debug HUD con información de sistema completa BUGS CORREGIDOS: - Fix: Cambiar escenario (1-8) en FIGURE ya no resetea a PHYSICS ❌→✅ - Fix: Las pelotas se inicializan correctamente según el modo activo - Fix: AppMode movido de centro a izquierda en Debug HUD 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -87,6 +87,16 @@ class Engine {
|
||||
void executeEnterLogoMode(size_t ball_count);
|
||||
void executeExitLogoMode();
|
||||
|
||||
// === Getters públicos para UIManager (Debug HUD) ===
|
||||
bool getVSyncEnabled() const { return vsync_enabled_; }
|
||||
bool getFullscreenEnabled() const { return fullscreen_enabled_; }
|
||||
bool getRealFullscreenEnabled() const { return real_fullscreen_enabled_; }
|
||||
ScalingMode getCurrentScalingMode() const { return current_scaling_mode_; }
|
||||
int getCurrentScreenWidth() const { return current_screen_width_; }
|
||||
int getCurrentScreenHeight() const { return current_screen_height_; }
|
||||
int getBaseScreenWidth() const { return base_screen_width_; }
|
||||
int getBaseScreenHeight() const { return base_screen_height_; }
|
||||
|
||||
private:
|
||||
// === Componentes del sistema (Composición) ===
|
||||
std::unique_ptr<InputHandler> input_handler_; // Manejo de entradas SDL
|
||||
@@ -168,9 +178,9 @@ class Engine {
|
||||
float logo_target_flip_percentage_ = 0.0f; // % de flip a esperar (0.2-0.8)
|
||||
int logo_current_flip_count_ = 0; // Flips observados hasta ahora
|
||||
|
||||
// Control de entrada manual vs automática a LOGO MODE
|
||||
// Determina si LOGO debe salir automáticamente o esperar input del usuario
|
||||
bool logo_entered_manually_ = false; // true si se activó con tecla K, false si automático desde DEMO
|
||||
// NOTA: logo_entered_manually_ fue eliminado de Engine (duplicado)
|
||||
// Ahora se obtiene de StateManager con state_manager_->getLogoEnteredManually()
|
||||
// Esto evita desincronización entre Engine y StateManager
|
||||
|
||||
// Estado previo antes de entrar a Logo Mode (para restaurar al salir)
|
||||
// Guardado por executeEnterLogoMode(), restaurado por executeExitLogoMode()
|
||||
|
||||
Reference in New Issue
Block a user