diff options
author | Paul Gilbert | 2015-08-27 08:55:27 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-08-27 08:55:27 -0400 |
commit | ca3050c9121938a05b33517f9e6672ee1e80b11f (patch) | |
tree | abda72244dd1831fbcbbec252eacfd71d196e923 /engines/sherlock/scalpel | |
parent | 55f9c364bcd717e3ae2b6c2b4effd942c930968e (diff) | |
download | scummvm-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.cpp | 12 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel_talk.h | 10 |
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(); |