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
|
||||
|
||||
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<int>(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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,11 @@ class LogoScene final : public Scene {
|
||||
// Seguiment de sons de lletres (evitar reproduccions repetides)
|
||||
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
|
||||
static constexpr float DURATION_PRE = 1.5F; // Duració PRE_ANIMATION (pantalla negra)
|
||||
static constexpr float DURATION_ZOOM = 4.0F; // Duració del zoom (segons)
|
||||
|
||||
Reference in New Issue
Block a user