aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/talk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sherlock/talk.cpp')
-rw-r--r--engines/sherlock/talk.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/engines/sherlock/talk.cpp b/engines/sherlock/talk.cpp
index 63bdc9044b..b347bd458d 100644
--- a/engines/sherlock/talk.cpp
+++ b/engines/sherlock/talk.cpp
@@ -823,7 +823,7 @@ void Talk::doScript(const Common::String &script) {
}
}
- bool trigger3DOMovie = true;
+ bool speakerSwitched = true;
uint16 subIndex = 1;
do {
@@ -844,13 +844,13 @@ void Talk::doScript(const Common::String &script) {
return;
case RET_CONTINUE:
continue;
- case OP_SWITCH_SPEAKER:
- trigger3DOMovie = true;
- break;
default:
break;
}
+ if (c == _opcodes[OP_SWITCH_SPEAKER])
+ speakerSwitched = true;
+
++str;
} else {
// Handle drawing the talk interface with the text
@@ -869,12 +869,10 @@ void Talk::doScript(const Common::String &script) {
_openTalkWindow = false;
}
- if ((_wait) && (trigger3DOMovie)) {
- // Trigger to play 3DO movie
- talk3DOMovieTrigger(subIndex);
-
- trigger3DOMovie = false; // wait for next switch speaker opcode
- subIndex++;
+ if ((_wait) && (speakerSwitched)) {
+ switchSpeaker(subIndex);
+ speakerSwitched = false;
+ ++subIndex;
}
if (_wait)