aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/parallaction.h')
-rw-r--r--engines/parallaction/parallaction.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h
index 9907f9a956..d491e1f807 100644
--- a/engines/parallaction/parallaction.h
+++ b/engines/parallaction/parallaction.h
@@ -302,6 +302,8 @@ struct BackgroundInfo {
#define DECLARE_COMMAND_OPCODE(op) void Parallaction::cmdOp_##op()
#define COMMAND_OPCODE(op) &Parallaction::cmdOp_##op
+#define DECLARE_INSTRUCTION_PARSER(sig) void Parallaction::instParse_##sig()
+#define INSTRUCTION_PARSER(sig) &Parallaction::instParse_##sig
#define DECLARE_INSTRUCTION_OPCODE(op) void Parallaction::instOp_##op()
#define INSTRUCTION_OPCODE(op) &Parallaction::instOp_##op
@@ -365,6 +367,29 @@ public:
DECLARE_COMMAND_OPCODE(move);
DECLARE_COMMAND_OPCODE(stop);
+ const Opcode *_instructionParsers;
+
+ struct {
+ Animation *a;
+ Instruction *inst;
+ LocalVariable *locals;
+ } _instParseCtxt;
+
+ DECLARE_INSTRUCTION_PARSER(animation);
+ DECLARE_INSTRUCTION_PARSER(loop);
+ DECLARE_INSTRUCTION_PARSER(x);
+ DECLARE_INSTRUCTION_PARSER(y);
+ DECLARE_INSTRUCTION_PARSER(z);
+ DECLARE_INSTRUCTION_PARSER(f);
+ DECLARE_INSTRUCTION_PARSER(inc);
+ DECLARE_INSTRUCTION_PARSER(set);
+ DECLARE_INSTRUCTION_PARSER(move);
+ DECLARE_INSTRUCTION_PARSER(put);
+ DECLARE_INSTRUCTION_PARSER(call);
+ DECLARE_INSTRUCTION_PARSER(sound);
+ DECLARE_INSTRUCTION_PARSER(null);
+ DECLARE_INSTRUCTION_PARSER(defLocal);
+
const Opcode *_instructionOpcodes;
struct {