From f8c5207d5caebaf11f062d874fd4ad3df821119f Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 4 Dec 2025 08:52:07 +0100 Subject: [PATCH] corregida la posicio del titol al inici --- source/game/escenes/escena_titol.cpp | 48 +++++++++++++++------------- source/game/escenes/escena_titol.hpp | 10 +++--- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/source/game/escenes/escena_titol.cpp b/source/game/escenes/escena_titol.cpp index 474104f..3765f28 100644 --- a/source/game/escenes/escena_titol.cpp +++ b/source/game/escenes/escena_titol.cpp @@ -330,32 +330,34 @@ void EscenaTitol::actualitzar(float delta_time) { animacio_activa_ = true; } - // Acumular temps escalat directament + // Només calcular i aplicar offsets si l'animació està activa if (animacio_activa_) { + // Acumular temps escalat temps_animacio_ += delta_time * factor_lerp_; + + // Usar amplituds i freqüències completes + float amplitude_x_actual = ORBIT_AMPLITUDE_X; + float amplitude_y_actual = ORBIT_AMPLITUDE_Y; + float frequency_x_actual = ORBIT_FREQUENCY_X; + float frequency_y_actual = ORBIT_FREQUENCY_Y; + + // Calcular offset orbital + float offset_x = amplitude_x_actual * std::sin(2.0f * Defaults::Math::PI * frequency_x_actual * temps_animacio_); + float offset_y = amplitude_y_actual * std::sin(2.0f * Defaults::Math::PI * frequency_y_actual * temps_animacio_ + ORBIT_PHASE_OFFSET); + + // Aplicar offset a totes les lletres de "ORNI" + for (size_t i = 0; i < lletres_orni_.size(); ++i) { + lletres_orni_[i].posicio.x = posicions_originals_orni_[i].x + static_cast(std::round(offset_x)); + lletres_orni_[i].posicio.y = posicions_originals_orni_[i].y + static_cast(std::round(offset_y)); + } + + // Aplicar offset a totes les lletres de "ATTACK!" + for (size_t i = 0; i < lletres_attack_.size(); ++i) { + lletres_attack_[i].posicio.x = posicions_originals_attack_[i].x + static_cast(std::round(offset_x)); + lletres_attack_[i].posicio.y = posicions_originals_attack_[i].y + static_cast(std::round(offset_y)); + } } - - // Usar amplituds i freqüències completes sempre - float amplitude_x_actual = ORBIT_AMPLITUDE_X; - float amplitude_y_actual = ORBIT_AMPLITUDE_Y; - float frequency_x_actual = ORBIT_FREQUENCY_X; - float frequency_y_actual = ORBIT_FREQUENCY_Y; - - // Calcular offset orbital - float offset_x = amplitude_x_actual * std::sin(2.0f * Defaults::Math::PI * frequency_x_actual * temps_animacio_); - float offset_y = amplitude_y_actual * std::sin(2.0f * Defaults::Math::PI * frequency_y_actual * temps_animacio_ + ORBIT_PHASE_OFFSET); - - // Aplicar offset a totes les lletres de "ORNI" - for (size_t i = 0; i < lletres_orni_.size(); ++i) { - lletres_orni_[i].posicio.x = posicions_originals_orni_[i].x + static_cast(std::round(offset_x)); - lletres_orni_[i].posicio.y = posicions_originals_orni_[i].y + static_cast(std::round(offset_y)); - } - - // Aplicar offset a totes les lletres de "ATTACK!" - for (size_t i = 0; i < lletres_attack_.size(); ++i) { - lletres_attack_[i].posicio.x = posicions_originals_attack_[i].x + static_cast(std::round(offset_x)); - lletres_attack_[i].posicio.y = posicions_originals_attack_[i].y + static_cast(std::round(offset_y)); - } + // Si no està activa, mantenim les posicions originals (ja establertes en inicialització) break; } diff --git a/source/game/escenes/escena_titol.hpp b/source/game/escenes/escena_titol.hpp index 0956d51..becd0e1 100644 --- a/source/game/escenes/escena_titol.hpp +++ b/source/game/escenes/escena_titol.hpp @@ -74,11 +74,11 @@ class EscenaTitol { static constexpr int MUSIC_FADE = 1000; // Duracio del fade de la musica del titol al començar a jugar // Constants d'animació del logo - static constexpr float ORBIT_AMPLITUDE_X = 2.0f * 2; // Amplitud oscil·lació horitzontal (píxels) - static constexpr float ORBIT_AMPLITUDE_Y = 1.5f * 2; // Amplitud oscil·lació vertical (píxels) - static constexpr float ORBIT_FREQUENCY_X = 0.8f; // Velocitat oscil·lació horitzontal (Hz) - static constexpr float ORBIT_FREQUENCY_Y = 1.2f; // Velocitat oscil·lació vertical (Hz) - static constexpr float ORBIT_PHASE_OFFSET = 1.57f; // Desfasament entre X i Y (90° per circular) + static constexpr float ORBIT_AMPLITUDE_X = 4.0f; // Amplitud oscil·lació horitzontal (píxels) + static constexpr float ORBIT_AMPLITUDE_Y = 3.0f; // Amplitud oscil·lació vertical (píxels) + static constexpr float ORBIT_FREQUENCY_X = 0.8f; // Velocitat oscil·lació horitzontal (Hz) + static constexpr float ORBIT_FREQUENCY_Y = 1.2f; // Velocitat oscil·lació vertical (Hz) + static constexpr float ORBIT_PHASE_OFFSET = 1.57f; // Desfasament entre X i Y (90° per circular) // Constants d'ombra del logo static constexpr float SHADOW_DELAY = 0.5f; // Retard temporal de l'ombra (segons)