diff options
author | Paul Gilbert | 2015-06-18 08:29:57 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-06-18 08:29:57 -0400 |
commit | f6c710e5b33b72723c4983bc498a4127497d772e (patch) | |
tree | 3b2cbd0d610296d4f1813593997d1b050ff25049 /engines | |
parent | 6238acff3c317bf4a9367a4dc1c2e2d9c149287e (diff) | |
download | scummvm-rg350-f6c710e5b33b72723c4983bc498a4127497d772e.tar.gz scummvm-rg350-f6c710e5b33b72723c4983bc498a4127497d772e.tar.bz2 scummvm-rg350-f6c710e5b33b72723c4983bc498a4127497d772e.zip |
SHERLOCK: RT: Create pullNPCPaths to call each NPC's pullNPCPath method
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sherlock/talk.cpp | 7 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_people.cpp | 11 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_people.h | 4 |
3 files changed, 21 insertions, 1 deletions
diff --git a/engines/sherlock/talk.cpp b/engines/sherlock/talk.cpp index 9983a30bda..050d319cfb 100644 --- a/engines/sherlock/talk.cpp +++ b/engines/sherlock/talk.cpp @@ -202,7 +202,9 @@ void Talk::talkTo(const Common::String &filename) { if (IS_SERRATED_SCALPEL) { // Restore any pressed button if (!ui._windowOpen && savedMode != STD_MODE) - ((Scalpel::ScalpelUserInterface *)_vm->_ui)->restoreButton((int)(savedMode - 1)); + static_cast<Scalpel::ScalpelUserInterface *>(_vm->_ui)->restoreButton((int)(savedMode - 1)); + } else { + static_cast<Tattoo::TattooPeople *>(_vm->_people)->pullNPCPaths(); } // Clear the ui counter so that anything displayed on the info line @@ -1118,6 +1120,9 @@ void Talk::doScript(const Common::String &script) { pullSequence(); if (_speaker >= 0 && _speaker < SPEAKER_REMOVE) people.clearTalking(); + + if (IS_ROSE_TATTOO) + static_cast<Tattoo::TattooPeople *>(_vm->_people)->pullNPCPaths(); } } diff --git a/engines/sherlock/tattoo/tattoo_people.cpp b/engines/sherlock/tattoo/tattoo_people.cpp index 3895f43831..217064fb4a 100644 --- a/engines/sherlock/tattoo/tattoo_people.cpp +++ b/engines/sherlock/tattoo/tattoo_people.cpp @@ -1239,6 +1239,17 @@ bool TattooPeople::loadWalk() { return result; } + +void TattooPeople::pullNPCPaths() { + for (int idx = 1; idx < MAX_CHARACTERS; ++idx) { + TattooPerson &p = (*this)[idx]; + if (p._npcMoved) { + while (!p._pathStack.empty()) + p.pullNPCPath(); + } + } +} + } // End of namespace Tattoo } // End of namespace Sherlock diff --git a/engines/sherlock/tattoo/tattoo_people.h b/engines/sherlock/tattoo/tattoo_people.h index 1abf2d5350..6883b9d0e6 100644 --- a/engines/sherlock/tattoo/tattoo_people.h +++ b/engines/sherlock/tattoo/tattoo_people.h @@ -222,6 +222,10 @@ public: */ void setListenSequence(int speaker, int sequenceNum); + /** + * Restore any saved NPC walk path data from any of the NPCs + */ + void pullNPCPaths(); /** * Finds the scene background object corresponding to a specified speaker |