aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction_ns.cpp
diff options
context:
space:
mode:
authorNicola Mettifogo2007-08-12 19:11:37 +0000
committerNicola Mettifogo2007-08-12 19:11:37 +0000
commit3465571b121fdcaba1b97f0a52b1aa16a25390a5 (patch)
treece450e7d458ed4eda0de1e5bb68bac95a94d2430 /engines/parallaction/parallaction_ns.cpp
parentd7b6f0ecc849ec4dbd6916f2ce466caae7343dc0 (diff)
downloadscummvm-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.cpp43
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