diff --git a/source/game/scenes/logo.cpp b/source/game/scenes/logo.cpp index 63d9b2f5..5ce86f86 100644 --- a/source/game/scenes/logo.cpp +++ b/source/game/scenes/logo.cpp @@ -85,6 +85,17 @@ void Logo::updateJAILGAMES(float delta_time) { } } +// Verifica si todas las líneas están en su posición destino +bool Logo::allJailgamesLinesInPosition() const { + // Iterar por todas las líneas (empezando desde 1, como en updateJAILGAMES) + for (size_t i = 1; i < jailgames_sprite_.size(); ++i) { + if (jailgames_sprite_[i]->getX() != JAILGAMES_DEST_X) { + return false; // Al menos una línea no ha llegado + } + } + return true; // Todas las líneas están en posición +} + // Calcula el índice de color según el progreso (0.0-1.0) auto Logo::getColorIndex(float progress) const -> int { // Asegurar que progress esté en el rango [0.0, 1.0] @@ -148,7 +159,7 @@ void Logo::updateState(float delta_time) { break; case State::JAILGAMES_SLIDE_IN: - if (state_time_ >= JAILGAMES_SLIDE_DURATION) { + if (allJailgamesLinesInPosition()) { transitionToState(State::SINCE_1998_FADE_IN); } break; diff --git a/source/game/scenes/logo.hpp b/source/game/scenes/logo.hpp index c6de5ffc..39aa844f 100644 --- a/source/game/scenes/logo.hpp +++ b/source/game/scenes/logo.hpp @@ -31,13 +31,12 @@ class Logo { private: // --- Constantes de tiempo (en segundos) --- static constexpr float INITIAL_DELAY = 0.5F; // Tiempo antes de que empiece la animación - static constexpr float JAILGAMES_SLIDE_DURATION = 1.2F; // Duración del slide-in de JAILGAMES static constexpr float SINCE_1998_FADE_DURATION = 0.5F; // Duración del fade-in de "Since 1998" static constexpr float DISPLAY_DURATION = 3.5F; // Tiempo que el logo permanece visible static constexpr float FADE_OUT_DURATION = 0.5F; // Duración del fade-out final // --- Constantes de animación --- - static constexpr float JAILGAMES_SLIDE_SPEED = 800.0F; // Velocidad de slide-in (pixels/segundo) + static constexpr float JAILGAMES_SLIDE_SPEED = 350.0F; // Velocidad de slide-in (pixels/segundo) static constexpr int JAILGAMES_DEST_X = 37; // Posición X de destino para JAILGAMES // --- Objetos y punteros --- @@ -64,6 +63,7 @@ class Logo { void updateState(float delta_time); // Actualiza el estado actual void transitionToState(State new_state); // Transiciona a un nuevo estado [[nodiscard]] auto getColorIndex(float progress) const -> int; // Calcula el índice de color según el progreso (0.0-1.0) + [[nodiscard]] bool allJailgamesLinesInPosition() const; // Verifica si todas las líneas están en su posición destino static void endSection(); // Termina la sección void initColors(); // Inicializa el vector de colores void initSprites(); // Crea los sprites de cada linea