aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction.h
diff options
context:
space:
mode:
authorNicola Mettifogo2008-05-10 11:11:03 +0000
committerNicola Mettifogo2008-05-10 11:11:03 +0000
commit6979458e26a3f8226aa46adcf0bea76ae8797eb0 (patch)
treeee90f0ce306300d09041131354798522892f4f87 /engines/parallaction/parallaction.h
parent61a3b1bd138d04296b8d6322bd998a87bca56589 (diff)
downloadscummvm-rg350-6979458e26a3f8226aa46adcf0bea76ae8797eb0.tar.gz
scummvm-rg350-6979458e26a3f8226aa46adcf0bea76ae8797eb0.tar.bz2
scummvm-rg350-6979458e26a3f8226aa46adcf0bea76ae8797eb0.zip
Extracted script parsing code to its own class.
svn-id: r31972
Diffstat (limited to 'engines/parallaction/parallaction.h')
-rw-r--r--engines/parallaction/parallaction.h53
1 files changed, 4 insertions, 49 deletions
diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h
index b3e93ee83f..367ee93f80 100644
--- a/engines/parallaction/parallaction.h
+++ b/engines/parallaction/parallaction.h
@@ -247,8 +247,6 @@ public:
-#define DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(sig) void instParse_##sig()
-
#define DECLARE_UNQUALIFIED_COMMAND_OPCODE(op) void cmdOp_##op()
#define DECLARE_UNQUALIFIED_INSTRUCTION_OPCODE(op) void instOp_##op()
@@ -554,6 +552,7 @@ public:
private:
LocationParser_ns *_locationParser;
+ ProgramParser_ns *_programParser;
void initFonts();
void freeFonts();
@@ -645,44 +644,9 @@ protected:
void drawAnimations();
void parseLocation(const char *filename);
- void initOpcodes();
-
-
- // program parser
- OpcodeSet _instructionParsers;
- Table *_instructionNames;
-
- struct {
- bool end;
- AnimationPtr a;
- InstructionPtr inst;
- LocalVariable *locals;
- ProgramPtr program;
-
- // BRA specific
- InstructionPtr openIf;
- } _instParseCtxt;
-
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(defLocal);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(animation);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(loop);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(x);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(y);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(z);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(f);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(inc);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(set);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(move);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(put);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(call);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(sound);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(null);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(endscript);
-
- void parseInstruction(ProgramPtr program);
void loadProgram(AnimationPtr a, const char *filename);
- void parseLValue(ScriptVar &var, const char *str);
- virtual void parseRValue(ScriptVar &var, const char *str);
+
+ void initOpcodes();
DECLARE_UNQUALIFIED_COMMAND_OPCODE(invalid);
DECLARE_UNQUALIFIED_COMMAND_OPCODE(set);
@@ -771,6 +735,7 @@ public:
private:
LocationParser_br *_locationParser;
+ ProgramParser_br *_programParser;
void initResources();
void initFonts();
@@ -818,16 +783,6 @@ private:
void parseLocation(const char* name);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(zone);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(color);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(mask);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(print);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(text);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(if_op);
- DECLARE_UNQUALIFIED_INSTRUCTION_PARSER(endif);
-
- virtual void parseRValue(ScriptVar &var, const char *str);
-
DECLARE_UNQUALIFIED_COMMAND_OPCODE(location);
DECLARE_UNQUALIFIED_COMMAND_OPCODE(open);
DECLARE_UNQUALIFIED_COMMAND_OPCODE(close);