diff options
author | Nicola Mettifogo | 2007-08-16 17:28:18 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-08-16 17:28:18 +0000 |
commit | f0f46113ee103e922ecde5f32652a482899c7e61 (patch) | |
tree | f64d178e1ac84dc135fef556c4ba53b944a24fdf /engines/parallaction/parallaction.cpp | |
parent | c987d6aaf0744e088c3119d7270e8a02ad47044a (diff) | |
download | scummvm-rg350-f0f46113ee103e922ecde5f32652a482899c7e61.tar.gz scummvm-rg350-f0f46113ee103e922ecde5f32652a482899c7e61.tar.bz2 scummvm-rg350-f0f46113ee103e922ecde5f32652a482899c7e61.zip |
Changed more parsing routines to use tables instead of switch statements.
svn-id: r28637
Diffstat (limited to 'engines/parallaction/parallaction.cpp')
-rw-r--r-- | engines/parallaction/parallaction.cpp | 67 |
1 files changed, 49 insertions, 18 deletions
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index 367b470a10..b2893ebfca 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -902,23 +902,25 @@ void Parallaction::initOpcodes() { _vm->_instructionOpcodes = op1; static const Opcode op2[] = { - COMMAND_PARSER(Invalid), - COMMAND_PARSER(Flags), // set - COMMAND_PARSER(Flags), // clear - COMMAND_PARSER(Animation), // start - COMMAND_PARSER(Zone), // speak - COMMAND_PARSER(Zone), // get - COMMAND_PARSER(Location), // location - COMMAND_PARSER(Zone), // open - COMMAND_PARSER(Zone), // close - COMMAND_PARSER(Zone), // on - COMMAND_PARSER(Zone), // off - COMMAND_PARSER(Call), // call - COMMAND_PARSER(Flags), // toggle - COMMAND_PARSER(Drop), // drop - COMMAND_PARSER(Null), // quit - COMMAND_PARSER(Move), // move - COMMAND_PARSER(Animation) // stop + COMMAND_PARSER(invalid), + COMMAND_PARSER(flags), // set + COMMAND_PARSER(flags), // clear + COMMAND_PARSER(animation), // start + COMMAND_PARSER(zone), // speak + COMMAND_PARSER(zone), // get + COMMAND_PARSER(location), // location + COMMAND_PARSER(zone), // open + COMMAND_PARSER(zone), // close + COMMAND_PARSER(zone), // on + COMMAND_PARSER(zone), // off + COMMAND_PARSER(call), // call + COMMAND_PARSER(flags), // toggle + COMMAND_PARSER(drop), // drop + COMMAND_PARSER(null), // quit + COMMAND_PARSER(move), // move + COMMAND_PARSER(animation), // stop + COMMAND_PARSER(endcommands), // endcommands + COMMAND_PARSER(endcommands) // endzone }; _commandParsers = op2; @@ -961,12 +963,41 @@ void Parallaction::initOpcodes() { LOCATION_PARSER(comment), LOCATION_PARSER(endcomment), LOCATION_PARSER(sound), - LOCATION_PARSER(music) + LOCATION_PARSER(music), + LOCATION_PARSER(redundant) // for redundant endanimation }; _locationParsers = op4; + static const Opcode op5[] = { + ZONE_PARSER(invalid), + ZONE_PARSER(limits), + ZONE_PARSER(moveto), + ZONE_PARSER(type), + ZONE_PARSER(commands), + ZONE_PARSER(label), + ZONE_PARSER(flags), + ZONE_PARSER(endzone) + }; + + _locationZoneParsers = op5; + + static const Opcode op6[] = { + ANIM_PARSER(invalid), + ANIM_PARSER(script), + ANIM_PARSER(commands), + ANIM_PARSER(type), + ANIM_PARSER(label), + ANIM_PARSER(flags), + ANIM_PARSER(file), + ANIM_PARSER(position), + ANIM_PARSER(moveto), + ANIM_PARSER(endanimation) + }; + + _locationAnimParsers = op6; + } } // namespace Parallaction |