diff --git a/source/app_logo.cpp b/source/app_logo.cpp index 958c1ba..6ea21ba 100644 --- a/source/app_logo.cpp +++ b/source/app_logo.cpp @@ -222,8 +222,8 @@ void AppLogo::update(float delta_time, AppMode current_mode) { // Fade in: alpha de 0 a 255, con Logo 2 retrasado 0.25s { // Calcular progreso de cada logo (Logo 2 con retraso) - float fade_progress_logo1 = timer_ / APPLOGO_FADE_DURATION; - float fade_progress_logo2 = std::max(0.0f, (timer_ - APPLOGO_LOGO2_DELAY) / APPLOGO_FADE_DURATION); + float fade_progress_logo1 = timer_ / APPLOGO_ANIMATION_DURATION; + float fade_progress_logo2 = std::max(0.0f, (timer_ - APPLOGO_LOGO2_DELAY) / APPLOGO_ANIMATION_DURATION); // Verificar si fade in completado (cuando logo2 también termina) if (fade_progress_logo2 >= 1.0f) { @@ -242,11 +242,9 @@ void AppLogo::update(float delta_time, AppMode current_mode) { logo2_stretch_x_ = 1.0f; logo2_rotation_ = 0.0f; } else { - // Interpolar alpha con retraso + easing para suavidad - float eased_prog1 = easeInOutQuad(std::min(1.0f, fade_progress_logo1)); - float eased_prog2 = easeInOutQuad(std::min(1.0f, fade_progress_logo2)); - logo1_alpha_ = static_cast(eased_prog1 * 255.0f); - logo2_alpha_ = static_cast(eased_prog2 * 255.0f); + // Interpolar alpha con retraso de forma LINEAL (sin easing) + logo1_alpha_ = static_cast(std::min(1.0f, fade_progress_logo1) * 255.0f); + logo2_alpha_ = static_cast(std::min(1.0f, fade_progress_logo2) * 255.0f); // ================================================================ // Aplicar MISMA animación (current_animation_) a ambos logos @@ -342,8 +340,8 @@ void AppLogo::update(float delta_time, AppMode current_mode) { // Fade out: alpha de 255 a 0, con Logo 2 retrasado 0.25s (misma animación que entrada) { // Calcular progreso de cada logo (Logo 2 con retraso) - float fade_progress_logo1 = timer_ / APPLOGO_FADE_DURATION; - float fade_progress_logo2 = std::max(0.0f, (timer_ - APPLOGO_LOGO2_DELAY) / APPLOGO_FADE_DURATION); + float fade_progress_logo1 = timer_ / APPLOGO_ANIMATION_DURATION; + float fade_progress_logo2 = std::max(0.0f, (timer_ - APPLOGO_LOGO2_DELAY) / APPLOGO_ANIMATION_DURATION); // Verificar si fade out completado (cuando logo2 también termina) if (fade_progress_logo2 >= 1.0f) { @@ -362,11 +360,9 @@ void AppLogo::update(float delta_time, AppMode current_mode) { logo2_stretch_x_ = 1.0f; logo2_rotation_ = 0.0f; } else { - // Interpolar alpha con retraso + easing para suavidad (255 → 0) - float eased_prog1 = easeInOutQuad(std::min(1.0f, fade_progress_logo1)); - float eased_prog2 = easeInOutQuad(std::min(1.0f, fade_progress_logo2)); - logo1_alpha_ = static_cast((1.0f - eased_prog1) * 255.0f); - logo2_alpha_ = static_cast((1.0f - eased_prog2) * 255.0f); + // Interpolar alpha con retraso de forma LINEAL (255 → 0, sin easing) + 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); // ================================================================ // Aplicar MISMA animación (current_animation_) de forma invertida diff --git a/source/defines.h b/source/defines.h index a24a8fc..ebb8ac8 100644 --- a/source/defines.h +++ b/source/defines.h @@ -289,12 +289,12 @@ constexpr float LOGO_FLIP_TRIGGER_MAX = 0.80f; // 80% máximo de progres constexpr int LOGO_FLIP_WAIT_PROBABILITY = 50; // 50% probabilidad de elegir el camino "esperar flip" // Configuración de AppLogo (logo periódico en pantalla) -constexpr float APPLOGO_DISPLAY_INTERVAL = 5.0f; // Intervalo entre apariciones del logo (segundos) -constexpr float APPLOGO_DISPLAY_DURATION = 10.0f; // Duración de visibilidad del logo (segundos) -constexpr float APPLOGO_FADE_DURATION = 1.9f; // Duración del fade in/out (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_LOGO2_DELAY = 0.25f; // Retraso de Logo 2 respecto a Logo 1 (segundos) +constexpr float APPLOGO_DISPLAY_INTERVAL = 5.0f; // Intervalo entre apariciones del logo (segundos) +constexpr float APPLOGO_DISPLAY_DURATION = 10.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_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_LOGO2_DELAY = 0.25f; // Retraso de Logo 2 respecto a Logo 1 (segundos) // Configuración de Modo BOIDS (comportamiento de enjambre) // TIME-BASED CONVERSION (frame-based → time-based):