diff options
-rw-r--r-- | engines/parallaction/animation.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/commands.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/parallaction.h | 7 | ||||
-rw-r--r-- | engines/parallaction/parallaction_ns.cpp | 7 |
4 files changed, 16 insertions, 2 deletions
diff --git a/engines/parallaction/animation.cpp b/engines/parallaction/animation.cpp index d4f538c451..281e3e8da9 100644 --- a/engines/parallaction/animation.cpp +++ b/engines/parallaction/animation.cpp @@ -566,7 +566,7 @@ void jobRunScripts(void *parm, Job *j) { case INST_CALL: // call - _callables[(*inst)->_opBase._index](0); + _vm->callFunction((*inst)->_opBase._index, 0); break; case INST_WAIT: // wait diff --git a/engines/parallaction/commands.cpp b/engines/parallaction/commands.cpp index 15acdd2d86..4df9aa4559 100644 --- a/engines/parallaction/commands.cpp +++ b/engines/parallaction/commands.cpp @@ -302,7 +302,7 @@ void Parallaction::runCommands(CommandList& list, Zone *z) { break; case CMD_CALL: // call - _callables[u->_callable](z); + callFunction(u->_callable, z); break; case CMD_QUIT: // quit diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 0cb6e92709..25753f60b2 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -478,6 +478,10 @@ protected: // members int16 pickupItem(Zone *z); int16 isItemInInventory(int32 v); int16 getHoverInventoryItem(int16 x, int16 y); + +public: + virtual void callFunction(uint index, void* parm) { } + }; class Parallaction_ns : public Parallaction { @@ -487,6 +491,9 @@ public: ~Parallaction_ns() { } int init(); + +public: + virtual void callFunction(uint index, void* parm); }; class Parallaction_br : public Parallaction { diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp index bc856772c3..5f0fb0fe84 100644 --- a/engines/parallaction/parallaction_ns.cpp +++ b/engines/parallaction/parallaction_ns.cpp @@ -66,4 +66,11 @@ int Parallaction_ns::init() { return 0; } +void Parallaction_ns::callFunction(uint index, void* parm) { + assert(index >= 0 && index < 25); // magic value 25 is maximum # of callables for Nippon Safes + + _callables[index](parm); +} + + } // namespace Parallaction |