diff options
author | Nicola Mettifogo | 2008-07-26 02:09:50 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2008-07-26 02:09:50 +0000 |
commit | aee128467893daa3e3482ad3c9a90b66cbc1bcdf (patch) | |
tree | 7592267960614da197516beddad2011582d87827 /engines/parallaction/parser_br.cpp | |
parent | 1174296a664a7e796cf178297b4e65d6a56bb158 (diff) | |
download | scummvm-rg350-aee128467893daa3e3482ad3c9a90b66cbc1bcdf.tar.gz scummvm-rg350-aee128467893daa3e3482ad3c9a90b66cbc1bcdf.tar.bz2 scummvm-rg350-aee128467893daa3e3482ad3c9a90b66cbc1bcdf.zip |
BRA now parses path data from the scripts.
svn-id: r33295
Diffstat (limited to 'engines/parallaction/parser_br.cpp')
-rw-r--r-- | engines/parallaction/parser_br.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/engines/parallaction/parser_br.cpp b/engines/parallaction/parser_br.cpp index defc917a72..7ed826d9f8 100644 --- a/engines/parallaction/parser_br.cpp +++ b/engines/parallaction/parser_br.cpp @@ -750,6 +750,67 @@ DECLARE_ZONE_PARSER(type) { _parser->popTables(); } +void LocationParser_br::parsePathData(ZonePtr z) { + + PathData *data = new PathData; + + do { + + if (!scumm_stricmp("zone", _tokens[0])) { + int id = atoi(_tokens[1]); + parsePointList(data->_lists[id]); + data->_numLists++; + } + + _script->readLineToken(true); + } while (scumm_stricmp("endzone", _tokens[0])); + + z->u.path = data; +} + +void LocationParser_br::parseZoneTypeBlock(ZonePtr z) { + debugC(7, kDebugParser, "parseZoneTypeBlock(name: %s, type: %x)", z->_name, z->_type); + + switch (z->_type & 0xFFFF) { + case kZoneExamine: // examine Zone alloc + parseExamineData(z); + break; + + case kZoneDoor: // door Zone alloc + parseDoorData(z); + break; + + case kZoneGet: // get Zone alloc + parseGetData(z); + break; + + case kZoneMerge: // merge Zone alloc + parseMergeData(z); + break; + + case kZoneHear: // hear Zone alloc + parseHearData(z); + break; + + case kZoneSpeak: // speak Zone alloc + parseSpeakData(z); + break; + + // BRA specific zone + case kZonePath: + parsePathData(z); + break; + + default: + // eats up 'ENDZONE' line for unprocessed zone types + _script->readLineToken(true); + break; + } + + debugC(7, kDebugParser, "parseZoneTypeBlock() done"); + + return; +} DECLARE_ANIM_PARSER(file) { debugC(7, kDebugParser, "ANIM_PARSER(file) "); |