aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction
diff options
context:
space:
mode:
authorNicola Mettifogo2007-03-18 21:00:22 +0000
committerNicola Mettifogo2007-03-18 21:00:22 +0000
commit4966b755f01eb21285ee341742ac413a5625f0b1 (patch)
tree74c71abff4364d17573e28162e44861b6d9cb656 /engines/parallaction
parent548a522733bf5285e28708c9bb33b5079054db20 (diff)
downloadscummvm-rg350-4966b755f01eb21285ee341742ac413a5625f0b1.tar.gz
scummvm-rg350-4966b755f01eb21285ee341742ac413a5625f0b1.tar.bz2
scummvm-rg350-4966b755f01eb21285ee341742ac413a5625f0b1.zip
changed DoorData::_cnv to be a pointer, in view of changes to Disk::loadFrames()
svn-id: r26230
Diffstat (limited to 'engines/parallaction')
-rw-r--r--engines/parallaction/commands.cpp3
-rw-r--r--engines/parallaction/graphics.cpp6
-rw-r--r--engines/parallaction/zone.cpp27
-rw-r--r--engines/parallaction/zone.h3
4 files changed, 21 insertions, 18 deletions
diff --git a/engines/parallaction/commands.cpp b/engines/parallaction/commands.cpp
index 5e50912bee..0c0ca1b36a 100644
--- a/engines/parallaction/commands.cpp
+++ b/engines/parallaction/commands.cpp
@@ -284,7 +284,7 @@ void runCommands(Command *list, Zone *z) {
case CMD_OPEN: // open
u->_zone->_flags &= ~kFlagsClosed;
- if (u->_zone->u.door->_cnv._count != 0) {
+ if (u->_zone->u.door->_cnv) {
_vm->addJob(&jobToggleDoor, (void*)u->_zone, kPriority18 );
}
break;
@@ -350,3 +350,4 @@ void runCommands(Command *list, Zone *z) {
} // namespace Parallaction
+
diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp
index 6067a329fc..afafa46897 100644
--- a/engines/parallaction/graphics.cpp
+++ b/engines/parallaction/graphics.cpp
@@ -521,11 +521,11 @@ void Gfx::backupDoorBackground(DoorData *data, int16 x, int16 y) {
byte *s = _buffers[kBit2] + x + y * SCREEN_WIDTH;
byte *d = data->_background;
- for (uint16 i = 0; i < data->_cnv._height ; i++) {
- memcpy(d, s, data->_cnv._width);
+ for (uint16 i = 0; i < data->_cnv->_height ; i++) {
+ memcpy(d, s, data->_cnv->_width);
s += SCREEN_WIDTH;
- d += data->_cnv._width;
+ d += data->_cnv->_width;
}
return;
diff --git a/engines/parallaction/zone.cpp b/engines/parallaction/zone.cpp
index b49463c9e8..abdc22dfe6 100644
--- a/engines/parallaction/zone.cpp
+++ b/engines/parallaction/zone.cpp
@@ -152,7 +152,9 @@ void Parallaction::freeZones(Node *list) {
case kZoneDoor:
free(z->u.door->_location);
free(z->u.door->_background);
- _vm->_gfx->freeCnv(&z->u.door->_cnv);
+ _vm->_gfx->freeCnv(z->u.door->_cnv);
+ if (z->u.door->_cnv)
+ delete z->u.door->_cnv;
delete z->u.door;
break;
@@ -265,19 +267,19 @@ void Parallaction::parseZoneTypeBlock(Script &script, Zone *z) {
if (!scumm_stricmp(_tokens[0], "file")) {
// printf("file: '%s'", _tokens[0]);
- Cnv *doorcnv = &u->door->_cnv;
+ u->door->_cnv = new Cnv;
strcpy(vC8, _tokens[1]);
StaticCnv vE0;
- _disk->loadFrames(vC8, doorcnv);
+ _disk->loadFrames(vC8, u->door->_cnv);
// printf("door width: %i, height: %i", doorcnv->_width, doorcnv->_height );
- vE0._width = doorcnv->_width;
- vE0._height = doorcnv->_height;
+ vE0._width = u->door->_cnv->_width;
+ vE0._height = u->door->_cnv->_height;
uint16 _ax = (z->_flags & kFlagsClosed ? 0 : 1);
- vE0._data0 = doorcnv->_array[_ax];
+ vE0._data0 = u->door->_cnv->_array[_ax];
// _ax = (z->_flags & kFlagsClosed ? 0 : 1);
// vE0._data1 = doorcnv->field_8[_ax];
@@ -445,7 +447,7 @@ uint16 runZone(Zone *z) {
case kZoneDoor:
if (z->_flags & kFlagsLocked) break;
z->_flags ^= kFlagsClosed;
- if (z->u.door->_cnv._count == 0) break;
+ if (z->u.door->_cnv == NULL) break;
_vm->addJob(&jobToggleDoor, z, kPriority18 );
break;
@@ -473,20 +475,19 @@ void jobToggleDoor(void *parm, Job *j) {
Zone *z = (Zone*)parm;
- Cnv *v18 = &z->u.door->_cnv;
StaticCnv v14;
- if (v18) {
- v14._width = v18->_width;
- v14._height = v18->_height;
+ if (z->u.door->_cnv) {
+ v14._width = z->u.door->_cnv->_width;
+ v14._height = z->u.door->_cnv->_height;
- Common::Rect r(z->_left, z->_top, z->_left+v18->_width, z->_top+v18->_height);
+ Common::Rect r(z->_left, z->_top, z->_left+z->u.door->_cnv->_width, z->_top+z->u.door->_cnv->_height);
_vm->_gfx->restoreZoneBackground(r, z->u.door->_background);
uint16 _ax = (z->_flags & kFlagsClosed ? 0 : 1);
- v14._data0 = v18->_array[_ax];
+ v14._data0 = z->u.door->_cnv->_array[_ax];
_vm->_gfx->flatBlitCnv(&v14, z->_left, z->_top, Gfx::kBitBack);
_vm->_gfx->flatBlitCnv(&v14, z->_left, z->_top, Gfx::kBit2);
diff --git a/engines/parallaction/zone.h b/engines/parallaction/zone.h
index 046403d7a0..c9d53d2f20 100644
--- a/engines/parallaction/zone.h
+++ b/engines/parallaction/zone.h
@@ -125,7 +125,7 @@ struct ExamineData { // size = 28
};
struct DoorData { // size = 28
char* _location;
- Cnv _cnv;
+ Cnv *_cnv;
byte* _background;
Common::Point _startPos;
uint16 _startFrame;
@@ -134,6 +134,7 @@ struct DoorData { // size = 28
_location = NULL;
_background = NULL;
_startFrame = 0;
+ _cnv = NULL;
}
};
struct HearData { // size = 20