aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/bladerunner.cpp
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-14 13:34:01 +0300
committerThanasis Antoniou2019-05-15 22:53:45 +0300
commit2d992a44309cfbe033d6a02c32db4183bf7ac978 (patch)
tree1674e0406940921d803165c9a1ea719b2f13f8ad /engines/bladerunner/bladerunner.cpp
parent8c02fd9ae891249a675c63d9060505fc57107787 (diff)
downloadscummvm-rg350-2d992a44309cfbe033d6a02c32db4183bf7ac978.tar.gz
scummvm-rg350-2d992a44309cfbe033d6a02c32db4183bf7ac978.tar.bz2
scummvm-rg350-2d992a44309cfbe033d6a02c32db4183bf7ac978.zip
BLADERUNNER: Fix sounds persist after load or end state
Loading a game with music from a scene with music would cause none of the music to be removed. Also looping sounds would persist in the loading screen after a game-over state
Diffstat (limited to 'engines/bladerunner/bladerunner.cpp')
-rw-r--r--engines/bladerunner/bladerunner.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 3d2a649dbc..44a59e1182 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -1863,6 +1863,14 @@ void BladeRunnerEngine::playerGainsControl() {
void BladeRunnerEngine::playerDied() {
playerLosesControl();
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ _ambientSounds->removeAllNonLoopingSounds(true);
+ _ambientSounds->removeAllLoopingSounds(4);
+ _music->stop(4);
+ _audioSpeech->stopSpeech();
+#endif // BLADERUNNER_ORIGINAL_BUGS
+
int timeWaitEnd = _time->current() + 5000;
while (_time->current() < timeWaitEnd) {
gameTick();
@@ -1946,8 +1954,15 @@ bool BladeRunnerEngine::loadGame(Common::SeekableReadStream &stream) {
SaveFileReadStream s(stream);
_ambientSounds->removeAllNonLoopingSounds(true);
+#if BLADERUNNER_ORIGINAL_BUGS
_ambientSounds->removeAllLoopingSounds(1);
_music->stop(2);
+#else
+ // loading into another game that also has music would
+ // two music tracks to overlap and none was stopped
+ _ambientSounds->removeAllLoopingSounds(0);
+ _music->stop(0);
+#endif // BLADERUNNER_ORIGINAL_BUGS
_audioSpeech->stopSpeech();
_actorDialogueQueue->flush(true, false);
_screenEffects->_entries.clear();