diff options
author | Nicola Mettifogo | 2008-08-15 15:08:08 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2008-08-15 15:08:08 +0000 |
commit | 7891e5afceff341c2a225a1f1856ea870f2e015d (patch) | |
tree | 7884c54a37675124039444ba9e9e7ac6d461d5ff /engines/parallaction/parser_br.cpp | |
parent | b4a2aee9640485b28ca61776c9c620b34747e451 (diff) | |
download | scummvm-rg350-7891e5afceff341c2a225a1f1856ea870f2e015d.tar.gz scummvm-rg350-7891e5afceff341c2a225a1f1856ea870f2e015d.tar.bz2 scummvm-rg350-7891e5afceff341c2a225a1f1856ea870f2e015d.zip |
Implemented raster operation for masks and postponed blitting of zones after everything in the location has been loaded. This fixes the remaining problems with animations not being masked by items.
svn-id: r33903
Diffstat (limited to 'engines/parallaction/parser_br.cpp')
-rw-r--r-- | engines/parallaction/parser_br.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/engines/parallaction/parser_br.cpp b/engines/parallaction/parser_br.cpp index 2a8064264d..20800abc33 100644 --- a/engines/parallaction/parser_br.cpp +++ b/engines/parallaction/parser_br.cpp @@ -793,7 +793,7 @@ void LocationParser_br::parseGetData(ZonePtr z) { data->_mask[0].create(rect.width(), rect.height()); _vm->_disk->loadMask(_tokens[1], data->_mask[0]); data->_mask[1].create(rect.width(), rect.height()); - data->_mask[1].blt(0, 0, ctxt.info->mask, data->gfxobj->x, data->gfxobj->y, data->_mask->w, data->_mask->h); + data->_mask[1].bltCopy(0, 0, ctxt.info->mask, data->gfxobj->x, data->gfxobj->y, data->_mask->w, data->_mask->h); data->hasMask = true; } else { warning("Mask for zone '%s' ignored, since background doesn't have one", z->_name); @@ -812,11 +812,6 @@ void LocationParser_br::parseGetData(ZonePtr z) { } while (scumm_stricmp(_tokens[0], "endzone")); z->u.get = data; - - // FIXME: right now showZone doesn't work properly when called during location - // parsing. In fact, the main backgroundInfo is not properly set yet. - bool visible = (z->_flags & kFlagsRemove) == 0; - _vm->showZone(z, visible); } void LocationParser_br::parseZoneTypeBlock(ZonePtr z) { @@ -1252,6 +1247,12 @@ void LocationParser_br::parse(Script *script) { _vm->_pathBuffer = &ctxt.info->path; + ZoneList::iterator it = _vm->_location._zones.begin(); + for ( ; it != _vm->_location._zones.end(); it++) { + bool visible = ((*it)->_flags & kFlagsRemove) == 0; + _vm->showZone((*it), visible); + } + if (ctxt.characterName) { _vm->changeCharacter(ctxt.characterName); } |