From db8acf0331fc2efed3708dcc2178151970674089 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 18 Oct 2025 19:40:53 +0200 Subject: [PATCH] =?UTF-8?q?clean:=20Eliminar=20logging=20debug=20+=20fix:?= =?UTF-8?q?=20Centro=20fijo=20para=20animaci=C3=B3n=20ZOOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **1. Eliminado logging de debug del FADE_OUT:** - Removido log de timer/delta_time/progress (FADE_OUT inicial) - Removido log de alpha1/alpha2 - Removido log de animaciones (ZOOM, ELASTIC, SPIRAL, BOUNCE) - Removido log de completado de FADE_OUT - Consola limpia en modo producción **2. Fix centro del logo en animación ZOOM_ONLY:** **Problema:** - Centro del logo se calculaba basándose en width/height escalados - Cuando scale cambiaba (1.2 → 1.0), corner_x/corner_y se movían - Resultado: logo se desplazaba lateralmente durante zoom **Solución:** - Calcular esquina BASE (sin escala): corner_x_base, corner_y_base - Calcular centro FIJO basándose en base_width/base_height - Calcular width/height escalados DESPUÉS (solo para vértices) - Resultado: centro permanece fijo, zoom crece/decrece alrededor del centro **Archivos modificados:** - source/app_logo.cpp: - Líneas 343-347: Eliminado log FADE_OUT inicial - Línea 347: Eliminado log completado - Líneas 365-366: Eliminado log alphas - Líneas 381-383: Eliminado log ZOOM - Líneas 396-398: Eliminado log ELASTIC - Líneas 414-417: Eliminado log SPIRAL - Líneas 444-446: Eliminado log BOUNCE - Líneas 609-625: Reordenado cálculo de centro (FIJO) y tamaño (ESCALADO) **Resultado esperado:** - Sin spam en consola - Animación ZOOM perfectamente centrada en esquina inferior derecha - Logo crece/decrece sin desplazamiento lateral 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- data/logo/logo2.png | Bin 123313 -> 125786 bytes source/app_logo.cpp | 47 +++++++++++--------------------------------- source/defines.h | 4 ++-- 3 files changed, 14 insertions(+), 37 deletions(-) diff --git a/data/logo/logo2.png b/data/logo/logo2.png index b4486dfb46d63296d6299b1c59557a6adfe36b39..32119be75974ace406f418cb7623669beef22937 100644 GIT binary patch delta 9064 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 delta 6887 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 Ijop6#4?0xIF8}}l diff --git a/source/app_logo.cpp b/source/app_logo.cpp index ae2ad56..9b1dc9d 100644 --- a/source/app_logo.cpp +++ b/source/app_logo.cpp @@ -343,15 +343,8 @@ void AppLogo::update(float delta_time, AppMode current_mode) { float fade_progress_logo1 = timer_ / APPLOGO_ANIMATION_DURATION; float fade_progress_logo2 = std::max(0.0f, (timer_ - APPLOGO_LOGO2_DELAY) / APPLOGO_ANIMATION_DURATION); - // LOG: Estado completo de FADE_OUT para diagnóstico - std::cout << "[FADE_OUT] timer=" << timer_ - << " | delta_time=" << delta_time - << " | prog1=" << fade_progress_logo1 - << " | prog2=" << fade_progress_logo2 << std::endl; - // Verificar si fade out completado (cuando logo2 también termina) if (fade_progress_logo2 >= 1.0f) { - std::cout << " [FADE_OUT COMPLETADO - Cambiando a HIDDEN]" << std::endl; // Fade out completado, volver a HIDDEN state_ = AppLogoState::HIDDEN; timer_ = 0.0f; @@ -371,9 +364,6 @@ void AppLogo::update(float delta_time, AppMode current_mode) { logo1_alpha_ = static_cast((1.0f - std::min(1.0f, fade_progress_logo1)) * 255.0f); logo2_alpha_ = static_cast((1.0f - std::min(1.0f, fade_progress_logo2)) * 255.0f); - std::cout << " → alpha1=" << logo1_alpha_ - << " | alpha2=" << logo2_alpha_ << std::endl; - // ================================================================ // Aplicar MISMA animación (current_animation_) de forma invertida // ================================================================ @@ -388,9 +378,6 @@ void AppLogo::update(float delta_time, AppMode current_mode) { logo2_squash_y_ = 1.0f; logo2_stretch_x_ = 1.0f; logo2_rotation_ = 0.0f; - - std::cout << " → ZOOM: scale1=" << logo1_scale_ - << " | scale2=" << logo2_scale_ << std::endl; break; case AppLogoAnimationType::ELASTIC_STICK: @@ -406,10 +393,6 @@ void AppLogo::update(float delta_time, AppMode current_mode) { logo2_squash_y_ = 1.0f + (prog2 * 0.3f); logo2_stretch_x_ = 1.0f - (prog2 * 0.2f); logo2_rotation_ = prog2 * 0.1f; - - std::cout << " → ELASTIC: scale1=" << logo1_scale_ - << " | squash1=" << logo1_squash_y_ - << " | stretch1=" << logo1_stretch_x_ << std::endl; } break; @@ -428,10 +411,6 @@ void AppLogo::update(float delta_time, AppMode current_mode) { logo2_rotation_ = prog2 * 6.28f; logo2_squash_y_ = 1.0f; logo2_stretch_x_ = 1.0f; - - std::cout << " → SPIRAL: scale1=" << logo1_scale_ - << " | rotation1=" << logo1_rotation_ - << " | ease_t1=" << ease_t1 << std::endl; } break; @@ -462,9 +441,6 @@ void AppLogo::update(float delta_time, AppMode current_mode) { } logo2_scale_ = 1.0f + (prog2 * 0.3f); logo2_rotation_ = 0.0f; - - std::cout << " → BOUNCE: scale1=" << logo1_scale_ - << " | squash1=" << logo1_squash_y_ << std::endl; } break; } @@ -630,22 +606,23 @@ void AppLogo::renderWithGeometry(int logo_index) { float alpha_normalized = static_cast(alpha) / 255.0f; // Convertir 0-255 → 0.0-1.0 // NO usar SDL_SetTextureAlphaMod - aplicar alpha directamente a vértices - // Calcular tamaño con escala y deformaciones aplicadas - // (base_width y base_height ya están pre-escalados al tamaño correcto de pantalla) - float width = base_width * scale * stretch_x; - float height = base_height * scale * squash_y; - // Calcular padding desde bordes derecho e inferior float padding_x = screen_width_ * APPLOGO_PADDING_PERCENT; float padding_y = screen_height_ * APPLOGO_PADDING_PERCENT; - // Calcular esquina del logo (anclado a esquina inferior derecha con padding) - float corner_x = screen_width_ - width - padding_x; - float corner_y = screen_height_ - height - padding_y; + // Calcular esquina BASE (sin escala) para obtener centro FIJO + // Esto asegura que el centro no se mueva cuando cambia scale/squash/stretch + float corner_x_base = screen_width_ - base_width - padding_x; + float corner_y_base = screen_height_ - base_height - padding_y; - // Centro del logo (para rotación) = esquina + mitad del tamaño - float center_x = corner_x + (width / 2.0f); - float center_y = corner_y + (height / 2.0f); + // Centro FIJO del logo (no cambia con scale/squash/stretch) + float center_x = corner_x_base + (base_width / 2.0f); + float center_y = corner_y_base + (base_height / 2.0f); + + // Calcular tamaño ESCALADO (para vértices) + // (base_width y base_height ya están pre-escalados al tamaño correcto de pantalla) + float width = base_width * scale * stretch_x; + float height = base_height * scale * squash_y; // Pre-calcular seno y coseno de rotación float cos_rot = cosf(rotation); diff --git a/source/defines.h b/source/defines.h index e7cba6a..0568ef8 100644 --- a/source/defines.h +++ b/source/defines.h @@ -291,9 +291,9 @@ constexpr int LOGO_FLIP_WAIT_PROBABILITY = 50; // 50% probabilidad de el // Configuración de AppLogo (logo periódico en pantalla) constexpr float APPLOGO_DISPLAY_INTERVAL = 2.0f; // Intervalo entre apariciones del logo (segundos) constexpr float APPLOGO_DISPLAY_DURATION = 4.0f; // Duración de visibilidad del logo (segundos) -constexpr float APPLOGO_ANIMATION_DURATION = 2.0f; // Duración de animación entrada/salida (segundos) +constexpr float APPLOGO_ANIMATION_DURATION = 0.5f; // Duración de animación entrada/salida (segundos) constexpr float APPLOGO_HEIGHT_PERCENT = 0.4f; // Altura del logo = 40% de la altura de pantalla -constexpr float APPLOGO_PADDING_PERCENT = 0.1f; // Padding desde esquina inferior-derecha = 10% +constexpr float APPLOGO_PADDING_PERCENT = 0.05f; // Padding desde esquina inferior-derecha = 10% constexpr float APPLOGO_LOGO2_DELAY = 0.25f; // Retraso de Logo 2 respecto a Logo 1 (segundos) // Configuración de Modo BOIDS (comportamiento de enjambre)