diff options
author | Nicola Mettifogo | 2007-08-12 19:11:37 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-08-12 19:11:37 +0000 |
commit | 3465571b121fdcaba1b97f0a52b1aa16a25390a5 (patch) | |
tree | ce450e7d458ed4eda0de1e5bb68bac95a94d2430 /engines/parallaction/parallaction_ns.cpp | |
parent | d7b6f0ecc849ec4dbd6916f2ce466caae7343dc0 (diff) | |
download | scummvm-rg350-3465571b121fdcaba1b97f0a52b1aa16a25390a5.tar.gz scummvm-rg350-3465571b121fdcaba1b97f0a52b1aa16a25390a5.tar.bz2 scummvm-rg350-3465571b121fdcaba1b97f0a52b1aa16a25390a5.zip |
Added preliminary support for loading locations in BRA:
- changed parseLocation to invoke subclasses for version-specific keywords.
- implemented loading of background resources (backgrounds should be visible)
svn-id: r28568
Diffstat (limited to 'engines/parallaction/parallaction_ns.cpp')
-rw-r--r-- | engines/parallaction/parallaction_ns.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp index 6dcae1bdc8..38e2d999ff 100644 --- a/engines/parallaction/parallaction_ns.cpp +++ b/engines/parallaction/parallaction_ns.cpp @@ -199,6 +199,49 @@ int Parallaction_ns::go() { return 0; } +bool Parallaction_ns::parseLocationLine(const char *filename, Script *script) { + bool parsed = true; + + if (!scumm_stricmp(_tokens[0], "LOCATION")) { + // The parameter for location is 'location.mask'. + // If mask is not present, then it is assumed + // that path & mask are encoded in the background + // bitmap, otherwise a separate .msk file exists. + + char *mask = strchr(_tokens[1], '.'); + if (mask) { + mask[0] = '\0'; + mask++; + } + + strcpy(_location._name, _tokens[1]); + switchBackground(_location._name, mask); + + if (_tokens[2][0] != '\0') { + _char._ani._left = atoi(_tokens[2]); + _char._ani._top = atoi(_tokens[3]); + } + + if (_tokens[4][0] != '\0') { + _char._ani._frame = atoi(_tokens[4]); + } + } else + if (!scumm_stricmp(_tokens[0], "DISK")) { + _disk->selectArchive(_tokens[1]); + } else + if (!scumm_stricmp(_tokens[0], "NODES")) { + parseWalkNodes(*script, _location._walkNodes); + } else + if (!scumm_stricmp(_tokens[0], "ZONE")) { + parseZone(*script, _zones, _tokens[1]); + } else + if (!scumm_stricmp(_tokens[0], "ANIMATION")) { + parseAnimation(*script, _animations, _tokens[1]); + } else + parsed = false; + + return parsed; +} } // namespace Parallaction |