feat(demo): silenciar els efectes de so durant la demo (música intacta)
This commit is contained in:
@@ -164,6 +164,10 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
|
|||||||
context_.advanceDemoScenario();
|
context_.advanceDemoScenario();
|
||||||
stage_manager_->initDemo(SC.stage);
|
stage_manager_->initDemo(SC.stage);
|
||||||
demo_timer_ = DEMO_DURATION;
|
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);
|
||||||
} else {
|
} else {
|
||||||
stage_manager_->init();
|
stage_manager_->init();
|
||||||
}
|
}
|
||||||
@@ -231,6 +235,13 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
|
|||||||
init_hud_rect_sound_played_ = false;
|
init_hud_rect_sound_played_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GameScene::~GameScene() {
|
||||||
|
// Si la demo havia silenciat els SFX, restaurar l'estat previ en sortir.
|
||||||
|
if (match_config_.mode == GameConfig::Mode::DEMO) {
|
||||||
|
Audio::get()->enableSound(sound_was_enabled_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto GameScene::isFinished() const -> bool {
|
auto GameScene::isFinished() const -> bool {
|
||||||
return context_.nextScene() != SceneType::GAME;
|
return context_.nextScene() != SceneType::GAME;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ enum class GameOverState : uint8_t {
|
|||||||
class GameScene final : public Scene {
|
class GameScene final : public Scene {
|
||||||
public:
|
public:
|
||||||
explicit GameScene(SDLManager& sdl, SceneManager::SceneContext& context);
|
explicit GameScene(SDLManager& sdl, SceneManager::SceneContext& context);
|
||||||
~GameScene() override = default;
|
~GameScene() override; // Restaura l'estat dels SFX si la demo els ha silenciat
|
||||||
|
|
||||||
// Scene interface
|
// Scene interface
|
||||||
void handleEvent(const SDL_Event& event) override;
|
void handleEvent(const SDL_Event& event) override;
|
||||||
@@ -106,6 +106,7 @@ class GameScene final : public Scene {
|
|||||||
std::array<Systems::Demo::DemoPilot, 2> demo_pilots_;
|
std::array<Systems::Demo::DemoPilot, 2> demo_pilots_;
|
||||||
std::array<Systems::Demo::Control, 2> demo_ctrls_{}; // Control per nau al frame actual
|
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)
|
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
|
// Funciones privades
|
||||||
// bullet_velocity: velocitat de la bala que ha causat la mort (Vec2{} si no
|
// bullet_velocity: velocitat de la bala que ha causat la mort (Vec2{} si no
|
||||||
|
|||||||
Reference in New Issue
Block a user