aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scalpel
diff options
context:
space:
mode:
authorPaul Gilbert2015-08-27 08:55:27 -0400
committerPaul Gilbert2015-08-27 08:55:27 -0400
commitca3050c9121938a05b33517f9e6672ee1e80b11f (patch)
treeabda72244dd1831fbcbbec252eacfd71d196e923 /engines/sherlock/scalpel
parent55f9c364bcd717e3ae2b6c2b4effd942c930968e (diff)
downloadscummvm-rg350-ca3050c9121938a05b33517f9e6672ee1e80b11f.tar.gz
scummvm-rg350-ca3050c9121938a05b33517f9e6672ee1e80b11f.tar.bz2
scummvm-rg350-ca3050c9121938a05b33517f9e6672ee1e80b11f.zip
SHERLOCK: RT: Fix previous commit, and make talkTo virtual
Diffstat (limited to 'engines/sherlock/scalpel')
-rw-r--r--engines/sherlock/scalpel/scalpel_talk.cpp12
-rw-r--r--engines/sherlock/scalpel/scalpel_talk.h10
2 files changed, 22 insertions, 0 deletions
diff --git a/engines/sherlock/scalpel/scalpel_talk.cpp b/engines/sherlock/scalpel/scalpel_talk.cpp
index 9b38a95c64..69d14211fd 100644
--- a/engines/sherlock/scalpel/scalpel_talk.cpp
+++ b/engines/sherlock/scalpel/scalpel_talk.cpp
@@ -171,6 +171,18 @@ ScalpelTalk::ScalpelTalk(SherlockEngine *vm) : Talk(vm) {
}
+void ScalpelTalk::talkTo(const Common::String filename) {
+ ScalpelUserInterface &ui = *(ScalpelUserInterface *)_vm->_ui;
+
+ Talk::talkTo(filename);
+
+ if (filename == "Tube59c") {
+ // WORKAROUND: Original game bug causes the results of testing the powdery substance
+ // to disappear too quickly. Introduce a delay to allow it to be properly displayed
+ ui._menuCounter = 30;
+ }
+}
+
void ScalpelTalk::talkInterface(const byte *&str) {
FixedText &fixedText = *_vm->_fixedText;
People &people = *_vm->_people;
diff --git a/engines/sherlock/scalpel/scalpel_talk.h b/engines/sherlock/scalpel/scalpel_talk.h
index 4d13258985..31f78cbf85 100644
--- a/engines/sherlock/scalpel/scalpel_talk.h
+++ b/engines/sherlock/scalpel/scalpel_talk.h
@@ -84,6 +84,16 @@ public:
virtual ~ScalpelTalk() {}
/**
+ * Called whenever a conversation or item script needs to be run. For standard conversations,
+ * it opens up a description window similar to how 'talk' does, but shows a 'reply' directly
+ * instead of waiting for a statement option.
+ * @remarks It seems that at some point, all item scripts were set up to use this as well.
+ * In their case, the conversation display is simply suppressed, and control is passed on to
+ * doScript to implement whatever action is required.
+ */
+ virtual void talkTo(const Common::String filename);
+
+ /**
* Draws the interface for conversation display
*/
void drawInterface();