fix(demo): silencia només els SFX de joc i evita que la veu de fase es cole al títol
This commit is contained in:
1 parent
69e337393a
commit
ef2c13b011
4 files changed
+28
-7
No files matched your search
@@ -170,10 +170,10 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
|
||||
context_.advanceDemoScenario();
|
||||
stage_manager_->initDemo(SC.stage);
|
||||
demo_timer_ = DEMO_DURATION;
|
||||
// Silenciar els SFX durant la demo (la música segueix). Guardem l'estat
|
||||
// previ per restaurar-lo al destructor sense xafar la preferència de l'usuari.
|
||||
sound_was_enabled_ = Audio::get()->isSoundEnabled();
|
||||
Audio::get()->enableSound(false);
|
||||
// Silenciar només els SFX de joc (Group::GAME) durant la demo: la música
|
||||
// i els sons del menu de servei (Group::INTERFACE) segueixen sonant. No
|
||||
// toquem el volum global ni la preferència de l'usuari.
|
||||
Audio::get()->silenceGroup(Audio::Group::GAME, true);
|
||||
// El fons (graella) ha d'aparèixer ja muntat: la demo és una partida en marxa.
|
||||
playfield_.completeBuild();
|
||||
// La cortinilla arrenca tapant i cau per destapar la demo (continua el
|
||||
@@ -247,9 +247,14 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
|
||||
}
|
||||
|
||||
GameScene::~GameScene() {
|
||||
// Si la demo havia silenciat els SFX, restaurar l'estat previ en sortir.
|
||||
// En sortir de la demo, primer parem qualsevol SFX encara sonant (p. ex. la
|
||||
// veu de "fase completa" que la demo va llançar muteada): si no, en restaurar
|
||||
// el volum del grup el motor reaplicaria la ganancia al canal viu i el so es
|
||||
// colaria a la pantalla de títol. Després restaurem el grup GAME per al
|
||||
// pròxim joc real.
|
||||
if (match_config_.mode == GameConfig::Mode::DEMO) {
|
||||
Audio::get()->enableSound(sound_was_enabled_);
|
||||
Audio::get()->stopAllSounds();
|
||||
Audio::get()->silenceGroup(Audio::Group::GAME, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,6 @@ class GameScene final : public Scene {
|
||||
std::array<Systems::Demo::DemoPilot, 2> demo_pilots_;
|
||||
std::array<Systems::Demo::Control, 2> demo_ctrls_{}; // Control per nau al frame actual
|
||||
float demo_timer_{0.0F}; // Temps restant de la demo (→ LOGO)
|
||||
bool sound_was_enabled_{true}; // Estat dels SFX abans de la demo (per restaurar-lo)
|
||||
|
||||
// Funciones privades
|
||||
// bullet_velocity: velocitat de la bala que ha causat la mort (Vec2{} si no
|
||||
|
||||
Reference in new issue
Block a user