aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--saga/music.h3
-rw-r--r--saga/saveload.cpp16
2 files changed, 14 insertions, 5 deletions
diff --git a/saga/music.h b/saga/music.h
index 98f6de7aa4..bb7d1f6d7e 100644
--- a/saga/music.h
+++ b/saga/music.h
@@ -111,7 +111,8 @@ public:
void resume(void);
void stop(void);
- void setVolume(int volume, int time);
+ void setVolume(int volume, int time = 1);
+ int getVolume() { return _currentVolume; }
private:
SagaEngine *_vm;
diff --git a/saga/saveload.cpp b/saga/saveload.cpp
index 62e4172e24..4086e07c26 100644
--- a/saga/saveload.cpp
+++ b/saga/saveload.cpp
@@ -30,13 +30,14 @@
#include "saga/saga.h"
#include "saga/actor.h"
+#include "saga/events.h"
+#include "saga/interface.h"
#include "saga/isomap.h"
+#include "saga/music.h"
+#include "saga/render.h"
#include "saga/resnames.h"
-#include "saga/script.h"
-#include "saga/interface.h"
#include "saga/scene.h"
-#include "saga/render.h"
-#include "saga/events.h"
+#include "saga/script.h"
#define CURRENT_SAGA_VER 3
@@ -225,10 +226,15 @@ void SagaEngine::load(const char *fileName) {
delete in;
+ // Mute volume to prevent outScene music play
+ int volume = _music->getVolume();
+ _music->setVolume(0);
+
_isoMap->setMapPosition(mapx, mapy);
_scene->clearSceneQueue();
_scene->changeScene(sceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade);
+
_events->handleEvents(0); //dissolve back grounds
if (insetSceneNumber != sceneNumber) {
@@ -238,6 +244,8 @@ void SagaEngine::load(const char *fileName) {
_scene->changeScene(insetSceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade);
}
+ _music->setVolume(volume);
+
_interface->draw();
}