aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scalpel
diff options
context:
space:
mode:
authorPaul Gilbert2015-08-07 06:52:58 -0400
committerPaul Gilbert2015-08-07 06:52:58 -0400
commit2696be83c04ddb5042091a2c52db9ed9f4a4e439 (patch)
tree3260670b1d7a5cfd20a602eee38114887f139411 /engines/sherlock/scalpel
parentb573e0cf7af9bf194888a132ebe1a96d8deb9d25 (diff)
downloadscummvm-rg350-2696be83c04ddb5042091a2c52db9ed9f4a4e439.tar.gz
scummvm-rg350-2696be83c04ddb5042091a2c52db9ed9f4a4e439.tar.bz2
scummvm-rg350-2696be83c04ddb5042091a2c52db9ed9f4a4e439.zip
SHERLOCK: SS: Cleaned up handling of 3DO portrait playback
Diffstat (limited to 'engines/sherlock/scalpel')
-rw-r--r--engines/sherlock/scalpel/scalpel_talk.cpp11
-rw-r--r--engines/sherlock/scalpel/scalpel_talk.h10
-rw-r--r--engines/sherlock/scalpel/scalpel_user_interface.cpp8
3 files changed, 19 insertions, 10 deletions
diff --git a/engines/sherlock/scalpel/scalpel_talk.cpp b/engines/sherlock/scalpel/scalpel_talk.cpp
index d85820e3dc..8261304675 100644
--- a/engines/sherlock/scalpel/scalpel_talk.cpp
+++ b/engines/sherlock/scalpel/scalpel_talk.cpp
@@ -537,12 +537,13 @@ void ScalpelTalk::talkWait(const byte *&str) {
}
}
-void ScalpelTalk::talk3DOMovieTrigger(int subIndex) {
- if (!IS_3DO) {
- // No 3DO? No movie!
- return;
- }
+void ScalpelTalk::switchSpeaker(int subIndex) {
+ // If it's the 3DO, pass on to start the actor's conversation movie
+ if (IS_3DO)
+ talk3DOMovieTrigger(subIndex);
+}
+void ScalpelTalk::talk3DOMovieTrigger(int subIndex) {
// Find out a few things that we need
int userSelector = _vm->_ui->_selector;
int scriptSelector = _scriptSelect;
diff --git a/engines/sherlock/scalpel/scalpel_talk.h b/engines/sherlock/scalpel/scalpel_talk.h
index dede117337..3ae36336df 100644
--- a/engines/sherlock/scalpel/scalpel_talk.h
+++ b/engines/sherlock/scalpel/scalpel_talk.h
@@ -63,10 +63,11 @@ protected:
*/
virtual void talkWait(const byte *&str);
+
/**
- * Trigger to play a 3DO talk dialog movie
+ * Called when the active speaker is switched
*/
- virtual void talk3DOMovieTrigger(int subIndex);
+ virtual void switchSpeaker(int subIndex);
/**
* Show the talk display
@@ -91,6 +92,11 @@ public:
* Prints a single conversation option in the interface window
*/
int talkLine(int lineNum, int stateNum, byte color, int lineY, bool slamIt);
+
+ /**
+ * Trigger to play a 3DO talk dialog movie
+ */
+ void talk3DOMovieTrigger(int subIndex);
};
} // End of namespace Scalpel
diff --git a/engines/sherlock/scalpel/scalpel_user_interface.cpp b/engines/sherlock/scalpel/scalpel_user_interface.cpp
index 8fcc92b2ac..5fe8c74c1a 100644
--- a/engines/sherlock/scalpel/scalpel_user_interface.cpp
+++ b/engines/sherlock/scalpel/scalpel_user_interface.cpp
@@ -27,6 +27,7 @@
#include "sherlock/scalpel/scalpel_people.h"
#include "sherlock/scalpel/scalpel_saveload.h"
#include "sherlock/scalpel/scalpel_screen.h"
+#include "sherlock/scalpel/scalpel_talk.h"
#include "sherlock/scalpel/settings.h"
#include "sherlock/scalpel/scalpel.h"
#include "sherlock/sherlock.h"
@@ -1483,7 +1484,7 @@ void ScalpelUserInterface::doTalkControl() {
ScalpelPeople &people = *(ScalpelPeople *)_vm->_people;
ScalpelScreen &screen = *(ScalpelScreen *)_vm->_screen;
Sound &sound = *_vm->_sound;
- Talk &talk = *_vm->_talk;
+ ScalpelTalk &talk = *(ScalpelTalk *)_vm->_talk;
Common::Point mousePos = events.mousePos();
_key = _oldKey = -1;
@@ -1645,8 +1646,9 @@ void ScalpelUserInterface::doTalkControl() {
sound._speechOn = false;
}
- // Trigger to play 3DO movie
- talk.talk3DOMovieTrigger(0);
+ if (IS_3DO)
+ // Trigger to play 3DO movie
+ talk.talk3DOMovieTrigger(0);
talk.waitForMore(talk._statements[_selector]._statement.size());
if (talk._talkToAbort)