aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2015-06-18 08:29:57 -0400
committerPaul Gilbert2015-06-18 08:29:57 -0400
commitf6c710e5b33b72723c4983bc498a4127497d772e (patch)
tree3b2cbd0d610296d4f1813593997d1b050ff25049 /engines
parent6238acff3c317bf4a9367a4dc1c2e2d9c149287e (diff)
downloadscummvm-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.cpp7
-rw-r--r--engines/sherlock/tattoo/tattoo_people.cpp11
-rw-r--r--engines/sherlock/tattoo/tattoo_people.h4
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