Fix: LOGO sale incorrectamente a DEMO al pulsar F manualmente
Corrige bug donde pulsar F en modo LOGO (llegando desde DEMO) causaba salida automática a DEMO debido a uso incorrecto de previous_app_mode_ como flag de "¿puede salir automáticamente?". ## Problema **Flujo con bug:** 1. SANDBOX → D → DEMO 2. DEMO → K → LOGO (guarda previous_app_mode_ = DEMO) 3. LOGO (SHAPE) → F → LOGO (PHYSICS) ← Acción MANUAL 4. updateDemoMode() ejecuta lógica de LOGO 5. Línea 1628: `if (previous_app_mode_ != SANDBOX && rand() < 60%)` 6. Como previous_app_mode_ == DEMO → Sale a DEMO ❌ **Causa raíz:** La variable previous_app_mode_ se usaba para dos propósitos: - Guardar a dónde volver (correcto) - Decidir si puede salir automáticamente (incorrecto) Esto causaba que acciones manuales del usuario (como F) activaran la probabilidad de salida automática. ## Solución Implementada **Nueva variable explícita:** ```cpp bool logo_entered_manually_; // true si tecla K, false si desde DEMO ``` **Asignación en enterLogoMode():** ```cpp logo_entered_manually_ = !from_demo; ``` **Condición corregida en updateDemoMode():** ```cpp // ANTES (incorrecto): if (previous_app_mode_ != AppMode::SANDBOX && rand() % 100 < 60) // AHORA (correcto): if (!logo_entered_manually_ && rand() % 100 < 60) ``` ## Ventajas ✅ **Separación de responsabilidades:** - previous_app_mode_: Solo para saber a dónde volver - logo_entered_manually_: Solo para control de salida automática ✅ **Semántica clara:** - Código más legible y expresivo ✅ **Más robusto:** - No depende de comparaciones indirectas ## Flujos Verificados **Flujo 1 (Manual desde SANDBOX):** - SANDBOX → K → LOGO (logo_entered_manually_ = true) - LOGO → F → PHYSICS - No sale automáticamente ✅ **Flujo 2 (Manual desde DEMO):** - SANDBOX → D → DEMO → K → LOGO (logo_entered_manually_ = true) - LOGO → F → PHYSICS - No sale automáticamente ✅ **Flujo 3 (Automático desde DEMO):** - SANDBOX → D → DEMO → auto → LOGO (logo_entered_manually_ = false) - LOGO ejecuta acciones automáticas - Sale a DEMO con 60% probabilidad ✅ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -120,6 +120,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
|
||||
bool logo_entered_manually_ = false; // true si se activó con tecla K, false si automático desde DEMO
|
||||
|
||||
// Estado previo antes de entrar a Logo Mode (para restaurar al salir)
|
||||
int logo_previous_theme_ = 0; // Índice de tema (0-9)
|
||||
size_t logo_previous_texture_index_ = 0;
|
||||
|
||||
Reference in New Issue
Block a user