From 9eb03b5091961c264655ca468922410f4c3d429d Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 4 Oct 2025 12:05:25 +0200 Subject: [PATCH] =?UTF-8?q?Refinar=20modos=20DEMO:=20m=C3=A1s=20dinamismo?= =?UTF-8?q?=20figuras/gravedad=20+=20textos=20del=20tema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CAMBIOS EN PESOS DEMO MODE: ✅ **Escenario: 10% → 2%** - Cambio MUY ocasional (mantiene cantidad actual) ✅ **Toggle gravedad ON/OFF: 8% → 15%** - ¡Ver caer pelotas sin gravedad! ✅ **Toggle física ↔ figura: 12% → 18%** - ¡Destruir figuras más frecuente! ✅ **Activar figura 3D: 20% → 22%** - Construir figuras ✅ **Re-generar figura: 8% → 10%** - Reconstruir después de destruir ✅ **Cambiar dirección gravedad: 10% → 12%** ✅ **Tema: 15% → 12%** ✅ **Impulso: 10% → 6%** ✅ **Profundidad/Escala/Sprite: 3%/2%/2% → 1%/1%/1%** - Muy ocasional RESULTADO: Mucho más dinámico y entretenido - Más "destrucción → caída → reconstrucción" - Mantiene mismo escenario más tiempo - Balance perfecto para embobarse viendo MEJORAS TEXTOS: ✅ **Eliminado display permanente** "DEMO MODE" / "DEMO LITE" ✅ **Texto solo al activar/desactivar** (como el resto) ✅ **Usa color del tema actual** (no naranja/azul fijos) ✅ **Centrado correctamente** con text_pos_ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- source/defines.h | 22 +++++++++++----------- source/engine.cpp | 23 ++++++----------------- 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/source/defines.h b/source/defines.h index 6f1ae65..90023d2 100644 --- a/source/defines.h +++ b/source/defines.h @@ -158,17 +158,17 @@ constexpr float DEMO_ACTION_INTERVAL_MIN = 2.0f; // Tiempo mínimo entre accio constexpr float DEMO_ACTION_INTERVAL_MAX = 6.0f; // Tiempo máximo entre acciones (segundos) // Pesos de probabilidad DEMO MODE (valores relativos, se normalizan) -constexpr int DEMO_WEIGHT_GRAVITY_DIR = 10; // Cambiar dirección gravedad (10%) -constexpr int DEMO_WEIGHT_GRAVITY_TOGGLE = 8; // Toggle gravedad ON/OFF (8%) -constexpr int DEMO_WEIGHT_SHAPE = 20; // Activar figura 3D (20%) -constexpr int DEMO_WEIGHT_TOGGLE_PHYSICS = 12; // Toggle física ↔ figura (12%) -constexpr int DEMO_WEIGHT_REGENERATE_SHAPE = 8; // Re-generar misma figura (8%) -constexpr int DEMO_WEIGHT_THEME = 15; // Cambiar tema de colores (15%) -constexpr int DEMO_WEIGHT_SCENARIO = 10; // Cambiar número de pelotas (10%) -constexpr int DEMO_WEIGHT_IMPULSE = 10; // Aplicar impulso (SPACE) (10%) -constexpr int DEMO_WEIGHT_DEPTH_ZOOM = 3; // Toggle profundidad (3%) -constexpr int DEMO_WEIGHT_SHAPE_SCALE = 2; // Cambiar escala figura (2%) -constexpr int DEMO_WEIGHT_SPRITE = 2; // Cambiar sprite (2%) +constexpr int DEMO_WEIGHT_GRAVITY_DIR = 12; // Cambiar dirección gravedad (12%) +constexpr int DEMO_WEIGHT_GRAVITY_TOGGLE = 15; // Toggle gravedad ON/OFF (15%) - ¡Ver caer pelotas! +constexpr int DEMO_WEIGHT_SHAPE = 22; // Activar figura 3D (22%) - Construir figuras +constexpr int DEMO_WEIGHT_TOGGLE_PHYSICS = 18; // Toggle física ↔ figura (18%) - ¡Destruir figuras! +constexpr int DEMO_WEIGHT_REGENERATE_SHAPE = 10; // Re-generar misma figura (10%) - Reconstruir +constexpr int DEMO_WEIGHT_THEME = 12; // Cambiar tema de colores (12%) +constexpr int DEMO_WEIGHT_SCENARIO = 2; // Cambiar número de pelotas (2%) - MUY OCASIONAL +constexpr int DEMO_WEIGHT_IMPULSE = 6; // Aplicar impulso (SPACE) (6%) +constexpr int DEMO_WEIGHT_DEPTH_ZOOM = 1; // Toggle profundidad (1%) +constexpr int DEMO_WEIGHT_SHAPE_SCALE = 1; // Cambiar escala figura (1%) +constexpr int DEMO_WEIGHT_SPRITE = 1; // Cambiar sprite (1%) // TOTAL: 100 // Configuración de Modo DEMO LITE (solo física/figuras) diff --git a/source/engine.cpp b/source/engine.cpp index 65f06e3..f4695a3 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -484,13 +484,15 @@ void Engine::handleEvents() { float interval_range = DEMO_ACTION_INTERVAL_MAX - DEMO_ACTION_INTERVAL_MIN; demo_next_action_time_ = DEMO_ACTION_INTERVAL_MIN + (rand() % 1000) / 1000.0f * interval_range; - // Mostrar texto de activación + // Mostrar texto de activación (usa color del tema) text_ = "DEMO MODE ON"; + text_pos_ = (current_screen_width_ - static_cast(text_.length() * 8)) / 2; show_text_ = true; text_init_time_ = SDL_GetTicks(); } else { // Al desactivar: mostrar texto text_ = "DEMO MODE OFF"; + text_pos_ = (current_screen_width_ - static_cast(text_.length() * 8)) / 2; show_text_ = true; text_init_time_ = SDL_GetTicks(); } @@ -511,13 +513,15 @@ void Engine::handleEvents() { float interval_range = DEMO_LITE_ACTION_INTERVAL_MAX - DEMO_LITE_ACTION_INTERVAL_MIN; demo_next_action_time_ = DEMO_LITE_ACTION_INTERVAL_MIN + (rand() % 1000) / 1000.0f * interval_range; - // Mostrar texto de activación + // Mostrar texto de activación (usa color del tema) text_ = "DEMO LITE ON"; + text_pos_ = (current_screen_width_ - static_cast(text_.length() * 8)) / 2; show_text_ = true; text_init_time_ = SDL_GetTicks(); } else { // Al desactivar: mostrar texto text_ = "DEMO LITE OFF"; + text_pos_ = (current_screen_width_ - static_cast(text_.length() * 8)) / 2; show_text_ = true; text_init_time_ = SDL_GetTicks(); } @@ -662,21 +666,6 @@ void Engine::render() { dbg_print(8, 72, mode_text.c_str(), 0, 255, 128); // Verde claro para modo } - // Mostrar indicador "DEMO MODE" o "DEMO LITE" permanente (independiente de show_debug_) - if (demo_mode_enabled_) { - // Centrar texto horizontalmente - const char* demo_text = "DEMO MODE"; - int demo_text_width = static_cast(strlen(demo_text) * 8); // 8 píxeles por carácter - int demo_x = (current_screen_width_ - demo_text_width) / 2; - dbg_print(demo_x, 8, demo_text, 255, 128, 0); // Naranja brillante - } else if (demo_lite_enabled_) { - // Centrar texto horizontalmente - const char* demo_lite_text = "DEMO LITE"; - int demo_lite_text_width = static_cast(strlen(demo_lite_text) * 8); - int demo_lite_x = (current_screen_width_ - demo_lite_text_width) / 2; - dbg_print(demo_lite_x, 8, demo_lite_text, 128, 200, 255); // Azul claro - } - SDL_RenderPresent(renderer_); }