aboutsummaryrefslogtreecommitdiff
path: root/engines/access/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/access/sound.cpp')
-rw-r--r--engines/access/sound.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/engines/access/sound.cpp b/engines/access/sound.cpp
index 90818ed5d3..072261dbf2 100644
--- a/engines/access/sound.cpp
+++ b/engines/access/sound.cpp
@@ -30,6 +30,7 @@ namespace Access {
SoundManager::SoundManager(AccessEngine *vm, Audio::Mixer *mixer) :
_vm(vm), _mixer(mixer) {
_music = nullptr;
+ _tempMusic = nullptr;
_musicRepeat = false;
_playingSound = false;
_isVoice = false;
@@ -37,6 +38,8 @@ SoundManager::SoundManager(AccessEngine *vm, Audio::Mixer *mixer) :
SoundManager::~SoundManager() {
clearSounds();
+ delete _music;
+ delete _tempMusic;
}
void SoundManager::clearSounds() {
@@ -95,7 +98,20 @@ void SoundManager::freeSounds() {
}
void SoundManager::newMusic(int musicId, int mode) {
- warning("TODO: newMusic");
+ if (mode == 1) {
+ stopSong();
+ freeMusic();
+ _music = _tempMusic;
+ _tempMusic = nullptr;
+ _musicRepeat = true;
+ if (_music)
+ midiPlay();
+ } else {
+ _musicRepeat = (mode == 2);
+ _tempMusic = _music;
+ stopSong();
+ _music = loadSound(97, musicId);
+ }
}
void SoundManager::freeMusic() {