diff options
author | James Brown | 2002-04-24 04:26:09 +0000 |
---|---|---|
committer | James Brown | 2002-04-24 04:26:09 +0000 |
commit | 280136f13aeeb5c30961253ca0a6e327ba91700a (patch) | |
tree | 9112ccafbbd84d440d807b2b0c3bef958d5a649a /object.cpp | |
parent | 20e9ad5e2339a777c6fde7c8897bf5c256e2883b (diff) | |
download | scummvm-rg350-280136f13aeeb5c30961253ca0a6e327ba91700a.tar.gz scummvm-rg350-280136f13aeeb5c30961253ca0a6e327ba91700a.tar.bz2 scummvm-rg350-280136f13aeeb5c30961253ca0a6e327ba91700a.zip |
Fix Indy4/MI2 crash due to VirtScroll code.
Cleanup \N's - For gods sake fix your CVS client :)
svn-id: r4067
Diffstat (limited to 'object.cpp')
-rw-r--r-- | object.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/object.cpp b/object.cpp index 64a12c8009..442c376f5f 100644 --- a/object.cpp +++ b/object.cpp @@ -336,6 +336,7 @@ void Scumm::drawObject(int obj, int arg) xpos = od->x_pos >> 3; ypos = od->y_pos; + width = od->width >> 3; height = od->height &= 0xF8; // Ender @@ -521,7 +522,8 @@ void Scumm::loadRoomObjectsSmall() setupRoomObject(od, room); } -CHECK_HEAP} + CHECK_HEAP +} void Scumm::setupRoomObject(ObjectData *od, byte *room) { @@ -558,8 +560,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room) return; } - cdhd = - (CodeHeader *)findResourceData(MKID('CDHD'), + cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), room + od->offs_obcd_to_room); if (_features & GF_AFTER_V7) od->obj_nr = READ_LE_UINT16(&(cdhd->v7.obj_id)); @@ -653,6 +654,7 @@ void Scumm::clearOwnerOf(int obj) } while (++i <= _numObjectsInRoom); return; } + for (i = 1; i < _maxInventoryItems; i++) { if (_inventory[i] == obj) { j = whereIsObject(obj); @@ -1184,6 +1186,7 @@ void Scumm::enqueueObject(int objectNumber, int objectX, int objectY, int object eo->unk3 = f; eo->unk4 = g; eo->image = image; + eo->mode = mode; } @@ -1202,11 +1205,8 @@ void Scumm::drawBlastObjects() void Scumm::drawBlastObject(BlastObject * eo) { VirtScreen *vs; - byte *roomptr, *bomp; - byte *ptr; - byte *img; + byte *bomp, *ptr, *img; int idx; - BompDrawData bdd; vs = &virtscr[0]; @@ -1217,8 +1217,7 @@ void Scumm::drawBlastObject(BlastObject * eo) idx = _objs[getObjectIndex(eo->number)].fl_object_index; - if(idx) - { + if(idx) { ptr = getResourceAddress(rtFlObject, idx); ptr = findResource(MKID('OBIM'), ptr); } else { @@ -1226,19 +1225,16 @@ void Scumm::drawBlastObject(BlastObject * eo) assert(idx != -1); ptr = getResourceAddress(1, _roomResource) + _objs[idx].offs_obim_to_room; } - if(!ptr) error("BlastObject object %d image not found",eo->number); img = findResource(IMxx_tags[eo->image], ptr); if(!img) img = findResource(IMxx_tags[1], ptr); // Backward compatibility with samnmax blast objects - if(!img) error("blast-object %d invalid image %d (1-x)",eo->number,eo->image); bomp = findResourceData(MKID('BOMP'), img); - if(!bomp) error("object %d is not a blast object",eo->number); @@ -1255,11 +1251,8 @@ void Scumm::drawBlastObject(BlastObject * eo) bdd.scale_y = (unsigned char)eo->unk4; drawBomp(&bdd, 0, bdd.dataptr, 1, 0); - - updateDirtyRect(vs->number, bdd.x, bdd.x + bdd.srcwidth, bdd.y, bdd.y + bdd.srcheight, 0); - } void Scumm::removeBlastObjects() |