From b363efd1f0c81f8f29d152fbe34826c45b6234e4 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 29 May 2026 08:54:56 +0200 Subject: [PATCH] =?UTF-8?q?feat(demo):=20logo=20silenci=C3=B3s=20dins=20el?= =?UTF-8?q?=20cicle=20d'atracci=C3=B3=20(no=20sons=20ni=20reinici=20de=20m?= =?UTF-8?q?=C3=BAsica=20si=20ja=20sona)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/game/scenes/logo_scene.cpp | 18 +++++++++++++++--- source/game/scenes/logo_scene.hpp | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/source/game/scenes/logo_scene.cpp b/source/game/scenes/logo_scene.cpp index ea1d787..55640ab 100644 --- a/source/game/scenes/logo_scene.cpp +++ b/source/game/scenes/logo_scene.cpp @@ -55,6 +55,11 @@ LogoScene::LogoScene(SDLManager& sdl, SceneContext& context) (void)option; // Suprimir warning sound_played_.fill(false); // Inicialitzar seguiment de sons + + // Si ja sona música (venim de la demo del cicle d'atracció), operar en + // silenci: ni sons de lletres ni reinici de title.ogg. + attract_silent_ = (Audio::getMusicState() == Audio::MusicState::PLAYING); + initLetters(); } @@ -171,7 +176,10 @@ void LogoScene::changeState(AnimationState nou_estat) { std::mt19937 g(rd()); std::shuffle(explosion_order_.begin(), explosion_order_.end(), g); } else if (nou_estat == AnimationState::POST_EXPLOSION) { - Audio::get()->playMusic("title.ogg"); + // En el cicle d'atracció la música ja sona; no la reiniciem. + if (!attract_silent_) { + Audio::get()->playMusic("title.ogg"); + } } std::cout << "[LogoScene] Canvi a state: " << static_cast(nou_estat) @@ -237,9 +245,13 @@ void LogoScene::update(float delta_time) { global_progress, LETTER_THRESHOLD); - // Reproduir so cuando la letter comença a aparèixer (progress > 0) + // Reproduir so cuando la letter comença a aparèixer (progress > 0). + // En mode silenciós (cicle d'atracció) saltem el so però igualment + // marquem la letter per no acumular pendents. if (letter_progress > 0.0F) { - Audio::get()->playSound(Defaults::Sound::LOGO, Audio::Group::GAME); + if (!attract_silent_) { + Audio::get()->playSound(Defaults::Sound::LOGO, Audio::Group::GAME); + } sound_played_[i] = true; } } diff --git a/source/game/scenes/logo_scene.hpp b/source/game/scenes/logo_scene.hpp index ca75643..aae6236 100644 --- a/source/game/scenes/logo_scene.hpp +++ b/source/game/scenes/logo_scene.hpp @@ -67,6 +67,11 @@ class LogoScene final : public Scene { // Seguiment de sons de lletres (evitar reproduccions repetides) std::array sound_played_; // Track si cada letter ya ha reproduit el so + // Cicle d'atracció: si en entrar al logo ja hi ha música sonant (venim de la + // demo amb title.ogg en marxa), el logo no ha d'emetre sons ni reiniciar la + // música — només repintar-se en silenci. + bool attract_silent_{false}; + // Constants de animación static constexpr float DURATION_PRE = 1.5F; // Duració PRE_ANIMATION (pantalla negra) static constexpr float DURATION_ZOOM = 4.0F; // Duració del zoom (segons)