diff options
Diffstat (limited to 'engines/agos/script_e1.cpp')
-rw-r--r-- | engines/agos/script_e1.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp index 6767afaba7..9acac2339f 100644 --- a/engines/agos/script_e1.cpp +++ b/engines/agos/script_e1.cpp @@ -152,7 +152,7 @@ void AGOSEngine::setupElvira1Opcodes(OpcodeProc *op) { op[260] = &AGOSEngine::oe1_ifTime; op[261] = &AGOSEngine::o_here; op[262] = &AGOSEngine::o_doClassIcons; - op[263] = &AGOSEngine::os1_playTune; + op[263] = &AGOSEngine::oe1_playTune; op[266] = &AGOSEngine::o_setAdjNoun; op[267] = &AGOSEngine::oe1_zoneDisk; op[268] = &AGOSEngine::o_saveUserGame; @@ -600,6 +600,26 @@ void AGOSEngine::oe1_ifTime() { setScriptCondition(false); } +void AGOSEngine::oe1_playTune() { + // 264: play tune + int music = getVarOrWord(); + int track = getVarOrWord(); + + if (music != _lastMusicPlayed) { + _lastMusicPlayed = music; + // No tune under water + if (music == 4) { + if (getPlatform() == Common::kPlatformAmiga) + _mixer->stopHandle(_modHandle); + else + midi.stop(); + } else { + loadMusic(music); + midi.startTrack(track); + } + } +} + void AGOSEngine::oe1_zoneDisk() { // 267: set disk number of each zone getVarOrWord(); |