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