From e7dc8f6d134a7c78a285122a6132a83790639c3f Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 16 Oct 2025 17:11:22 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20a=C3=B1adir=20cambio=20de=20direcci?= =?UTF-8?q?=C3=B3n=20de=20gravedad=20en=20modo=20LOGO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El modo LOGO ahora incluye cambios automáticos de dirección de gravedad como parte de sus variaciones, aumentando la diversidad visual de la demostración. Cambios: - Nueva acción en modo LOGO (PHYSICS): cambiar dirección gravedad (16%) - Rebalanceo de probabilidades existentes: • PHYSICS → SHAPE: 60% → 50% • Gravedad ON: 20% → 18% • Gravedad OFF: 20% → 16% • Dirección gravedad: nuevo 16% - Al cambiar dirección, se fuerza gravedad ON para visibilidad Antes el modo LOGO solo alternaba entre figura/física y gravedad on/off, pero nunca cambiaba la dirección. Ahora tiene las mismas capacidades de variación que los modos DEMO y DEMO_LITE. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- source/engine.cpp | 20 +++++++++++++------- source/state/state_manager.h | 5 +++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/source/engine.cpp b/source/engine.cpp index c356c2d..6919163 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -1140,20 +1140,26 @@ void Engine::performLogoAction(bool logo_waiting_for_flip) { demo_next_action_time_ = logo_min_time_ + (rand() % 1000) / 1000.0f * interval_range; } } else { - // Logo animado (PHYSICS) → 3 opciones posibles - if (action < 60) { - // 60%: PHYSICS → SHAPE (reconstruir logo y ver rotaciones) + // Logo animado (PHYSICS) → 4 opciones posibles + if (action < 50) { + // 50%: PHYSICS → SHAPE (reconstruir logo y ver rotaciones) toggleShapeModeInternal(false); // Resetear variables de espera de flips al volver a SHAPE logo_waiting_for_flip_ = false; logo_current_flip_count_ = 0; - } else if (action < 80) { - // 20%: Forzar gravedad ON (empezar a caer mientras da vueltas) + } else if (action < 68) { + // 18%: Forzar gravedad ON (empezar a caer mientras da vueltas) scene_manager_->forceBallsGravityOn(); - } else { - // 20%: Forzar gravedad OFF (flotar mientras da vueltas) + } else if (action < 84) { + // 16%: Forzar gravedad OFF (flotar mientras da vueltas) scene_manager_->forceBallsGravityOff(); + } else { + // 16%: Cambiar dirección de gravedad (nueva variación) + GravityDirection new_direction = static_cast(rand() % 4); + scene_manager_->changeGravityDirection(new_direction); + // Si la gravedad está OFF, activarla para que el cambio sea visible + scene_manager_->forceBallsGravityOn(); } // Resetear timer con intervalos escalados diff --git a/source/state/state_manager.h b/source/state/state_manager.h index f9a66a9..3e8c687 100644 --- a/source/state/state_manager.h +++ b/source/state/state_manager.h @@ -119,6 +119,11 @@ class StateManager { */ float getLogoPreviousShapeScale() const { return logo_previous_shape_scale_; } + /** + * @brief Obtiene si LOGO fue activado manualmente (tecla K) o automáticamente (desde DEMO) + */ + bool getLogoEnteredManually() const { return logo_entered_manually_; } + /** * @brief Establece valores previos de LOGO (llamado por Engine antes de entrar) */