diff options
author | Nicola Mettifogo | 2007-10-14 20:59:46 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-10-14 20:59:46 +0000 |
commit | 652069f1a639cac69d5c4fd87149f1f068251c38 (patch) | |
tree | 46d5e7a7612cfb9941c13c78cb78add08aee050b /engines/parallaction/parser_br.cpp | |
parent | 0e693cbbfb4b115490fb503e9b28eb1248879c8d (diff) | |
download | scummvm-rg350-652069f1a639cac69d5c4fd87149f1f068251c38.tar.gz scummvm-rg350-652069f1a639cac69d5c4fd87149f1f068251c38.tar.bz2 scummvm-rg350-652069f1a639cac69d5c4fd87149f1f068251c38.zip |
Made location parser more fault-tolerant, in that it prints out a warning message instead of exiting ScummVM when it encounters an unexpected keywords in the scripts.
svn-id: r29220
Diffstat (limited to 'engines/parallaction/parser_br.cpp')
-rw-r--r-- | engines/parallaction/parser_br.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/engines/parallaction/parser_br.cpp b/engines/parallaction/parser_br.cpp index b68dfccc00..b92da0478f 100644 --- a/engines/parallaction/parser_br.cpp +++ b/engines/parallaction/parser_br.cpp @@ -784,6 +784,8 @@ typedef OpcodeImpl<Parallaction_br> OpcodeV2; #define LOCATION_PARSER(sig) OpcodeV2(this, &Parallaction_br::locParse_##sig) #define COMMAND_PARSER(sig) OpcodeV2(this, &Parallaction_br::cmdParse_##sig) +#define WARNING_PARSER(sig) OpcodeV2(this, &Parallaction_br::warning_##sig) + void Parallaction_br::initParsers() { static const OpcodeV2 op0[] = { @@ -827,7 +829,7 @@ void Parallaction_br::initParsers() { static const OpcodeV2 op2[] = { - COMMAND_PARSER(invalid), + WARNING_PARSER(unexpected), COMMAND_PARSER(flags), // set COMMAND_PARSER(flags), // clear COMMAND_PARSER(animation), // start @@ -853,8 +855,8 @@ void Parallaction_br::initParsers() { COMMAND_PARSER(math), // inc COMMAND_PARSER(math), // dec COMMAND_PARSER(test), // test - COMMAND_PARSER(invalid), - COMMAND_PARSER(invalid), + WARNING_PARSER(unexpected), + WARNING_PARSER(unexpected), COMMAND_PARSER(math), // let COMMAND_PARSER(music), COMMAND_PARSER(zone), // fix @@ -865,7 +867,7 @@ void Parallaction_br::initParsers() { COMMAND_PARSER(give), COMMAND_PARSER(text), COMMAND_PARSER(unary), // part - COMMAND_PARSER(invalid), + WARNING_PARSER(unexpected), COMMAND_PARSER(simple), // return COMMAND_PARSER(simple), // onsave COMMAND_PARSER(simple), // offsave @@ -878,7 +880,7 @@ void Parallaction_br::initParsers() { _commandParsers.push_back(&op2[i]); static const OpcodeV2 op4[] = { - LOCATION_PARSER(invalid), + WARNING_PARSER(unexpected), LOCATION_PARSER(character), LOCATION_PARSER(endlocation), LOCATION_PARSER(ifchar), @@ -899,14 +901,13 @@ void Parallaction_br::initParsers() { LOCATION_PARSER(zeta), LOCATION_PARSER(music), LOCATION_PARSER(sound) -// LOCATION_PARSER(redundant) // for redundant endanimation }; for (i = 0; i < ARRAYSIZE(op4); i++) _locationParsers.push_back(&op4[i]); static const OpcodeV2 op5[] = { - ZONE_PARSER(invalid), + WARNING_PARSER(unexpected), ZONE_PARSER(endzone), ZONE_PARSER(limits), ZONE_PARSER(moveto), @@ -920,7 +921,7 @@ void Parallaction_br::initParsers() { _locationZoneParsers.push_back(&op5[i]); static const OpcodeV2 op6[] = { - ANIM_PARSER(invalid), + WARNING_PARSER(unexpected), ANIM_PARSER(endanimation), ANIM_PARSER(endanimation), // endzone ANIM_PARSER(script), |