feat(demo): logo silenciós dins el cicle d'atracció (no sons ni reinici de música si ja sona)
This commit is contained in:
@@ -55,6 +55,11 @@ LogoScene::LogoScene(SDLManager& sdl, SceneContext& context)
|
|||||||
(void)option; // Suprimir warning
|
(void)option; // Suprimir warning
|
||||||
|
|
||||||
sound_played_.fill(false); // Inicialitzar seguiment de sons
|
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();
|
initLetters();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +176,10 @@ void LogoScene::changeState(AnimationState nou_estat) {
|
|||||||
std::mt19937 g(rd());
|
std::mt19937 g(rd());
|
||||||
std::shuffle(explosion_order_.begin(), explosion_order_.end(), g);
|
std::shuffle(explosion_order_.begin(), explosion_order_.end(), g);
|
||||||
} else if (nou_estat == AnimationState::POST_EXPLOSION) {
|
} 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<int>(nou_estat)
|
std::cout << "[LogoScene] Canvi a state: " << static_cast<int>(nou_estat)
|
||||||
@@ -237,9 +245,13 @@ void LogoScene::update(float delta_time) {
|
|||||||
global_progress,
|
global_progress,
|
||||||
LETTER_THRESHOLD);
|
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) {
|
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;
|
sound_played_[i] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,6 +67,11 @@ class LogoScene final : public Scene {
|
|||||||
// Seguiment de sons de lletres (evitar reproduccions repetides)
|
// Seguiment de sons de lletres (evitar reproduccions repetides)
|
||||||
std::array<bool, 9> sound_played_; // Track si cada letter ya ha reproduit el so
|
std::array<bool, 9> 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
|
// Constants de animación
|
||||||
static constexpr float DURATION_PRE = 1.5F; // Duració PRE_ANIMATION (pantalla negra)
|
static constexpr float DURATION_PRE = 1.5F; // Duració PRE_ANIMATION (pantalla negra)
|
||||||
static constexpr float DURATION_ZOOM = 4.0F; // Duració del zoom (segons)
|
static constexpr float DURATION_ZOOM = 4.0F; // Duració del zoom (segons)
|
||||||
|
|||||||
Reference in New Issue
Block a user