aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/parallaction/animation.cpp2
-rw-r--r--engines/parallaction/commands.cpp2
-rw-r--r--engines/parallaction/parallaction.h7
-rw-r--r--engines/parallaction/parallaction_ns.cpp7
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