aboutsummaryrefslogtreecommitdiff
path: root/queen/sound.cpp
diff options
context:
space:
mode:
authorJoost Peters2003-12-14 00:33:21 +0000
committerJoost Peters2003-12-14 00:33:21 +0000
commit1de28a2931b9f48f7af12595d4e04554d25de578 (patch)
tree3350e7d718f975e02572530fc495d0c608a3c299 /queen/sound.cpp
parent80aac33327181ae281ea0d85bfec326583f3b55a (diff)
downloadscummvm-rg350-1de28a2931b9f48f7af12595d4e04554d25de578.tar.gz
scummvm-rg350-1de28a2931b9f48f7af12595d4e04554d25de578.tar.bz2
scummvm-rg350-1de28a2931b9f48f7af12595d4e04554d25de578.zip
Initial (Roland) Music support; a lot of stuff is still missing and/or incomplete.
svn-id: r11621
Diffstat (limited to 'queen/sound.cpp')
-rw-r--r--queen/sound.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/queen/sound.cpp b/queen/sound.cpp
index fbc710a711..397891248d 100644
--- a/queen/sound.cpp
+++ b/queen/sound.cpp
@@ -23,6 +23,7 @@
#include "queen/sound.h"
#include "queen/input.h"
+#include "queen/music.h"
#include "queen/queen.h"
#include "queen/resource.h"
@@ -135,10 +136,36 @@ void Sound::waitSfxFinished() {
}
void Sound::playSong(int16 songNum) {
+ if (songNum == STOP_MUSIC) {
+ _vm->music()->stopSong();
+ return;
+ }
+
int16 newTune = _song[songNum - 1].tuneList[0];
- if (_tune[newTune - 1].sfx[0] && sfxOn())
+ if (_tune[newTune - 1].sfx[0] && sfxOn()) {
sfxPlay(_sfxName[_tune[newTune - 1].sfx[0] - 1]);
+ return;
+ }
+
+ //TODO: Record onto song stack for saving/loading
+
+ switch (_tune[newTune - 1].mode) {
+ //Random loop
+ case 0:
+ warning("Music: Random loop not yet supported (doing sequential loop instead)");
+ //Sequential loop
+ case 1:
+ _vm->music()->loop(true);
+ break;
+ //Play once
+ case 2:
+ default:
+ _vm->music()->loop(false);
+ break;
+ }
+
+ _vm->music()->playSong(_tune[newTune - 1].tuneNum[0] - 1);
}