aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorStrangerke2014-11-02 12:00:50 +0100
committerPaul Gilbert2014-12-12 22:20:16 -0500
commit335acfac892ab071d791db46161d5ca4c8868109 (patch)
treed52af8d878a972ed21a6e00d8496ff3f1962f882 /engines
parentc03845258843a7b0d1db792ea42a986bf79c917a (diff)
downloadscummvm-rg350-335acfac892ab071d791db46161d5ca4c8868109.tar.gz
scummvm-rg350-335acfac892ab071d791db46161d5ca4c8868109.tar.bz2
scummvm-rg350-335acfac892ab071d791db46161d5ca4c8868109.zip
ACCESS: Implement newMusic()
Diffstat (limited to 'engines')
-rw-r--r--engines/access/sound.cpp18
-rw-r--r--engines/access/sound.h1
2 files changed, 18 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() {
diff --git a/engines/access/sound.h b/engines/access/sound.h
index cc02229b3b..5c130661a7 100644
--- a/engines/access/sound.h
+++ b/engines/access/sound.h
@@ -46,6 +46,7 @@ public:
Common::Array<Resource *> _soundTable;
Common::Array<int> _soundPriority;
Resource *_music;
+ Resource *_tempMusic;
bool _musicRepeat;
bool _playingSound;
bool _isVoice;