diff options
author | Vincent Hamm | 2002-03-05 20:43:26 +0000 |
---|---|---|
committer | Vincent Hamm | 2002-03-05 20:43:26 +0000 |
commit | c0b0afa68a6f0643e1ee94f8d1c5ff98f557db25 (patch) | |
tree | de92b70f639494f60f621a5a4e1efd86c3a071b3 /object.cpp | |
parent | 6387020fd9a9c41654d37cb8feca464fd7d5fec1 (diff) | |
download | scummvm-rg350-c0b0afa68a6f0643e1ee94f8d1c5ff98f557db25.tar.gz scummvm-rg350-c0b0afa68a6f0643e1ee94f8d1c5ff98f557db25.tar.bz2 scummvm-rg350-c0b0afa68a6f0643e1ee94f8d1c5ff98f557db25.zip |
Fixed struct CodeHeader for v7 implementation
svn-id: r3651
Diffstat (limited to 'object.cpp')
-rw-r--r-- | object.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/object.cpp b/object.cpp index efae0982f8..8205af8192 100644 --- a/object.cpp +++ b/object.cpp @@ -374,7 +374,14 @@ void Scumm::loadRoomObjects() { od->offs_obcd_to_room = ptr - room; cdhd = (CodeHeader*)findResourceData(MKID('CDHD'), ptr); - od->obj_nr = READ_LE_UINT16(&cdhd->obj_id); + + if(_features & GF_AFTER_V7) + od->obj_nr = READ_LE_UINT16(&(cdhd->v7.obj_id)); + else + if(_features & GF_AFTER_V6) + od->obj_nr = READ_LE_UINT16(&(cdhd->v6.obj_id)); + else + od->obj_nr = READ_LE_UINT16(&(cdhd->v5.obj_id)); #ifdef DUMP_SCRIPTS do { @@ -509,8 +516,14 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room) { } cdhd = (CodeHeader*)findResourceData(MKID('CDHD'), room + od->offs_obcd_to_room); - od->obj_nr = READ_LE_UINT16(&cdhd->obj_id); - + if(_features & GF_AFTER_V7) + od->obj_nr = READ_LE_UINT16(&(cdhd->v7.obj_id)); + else + if(_features & GF_AFTER_V6) + od->obj_nr = READ_LE_UINT16(&(cdhd->v6.obj_id)); + else + od->obj_nr = READ_LE_UINT16(&(cdhd->v5.obj_id)); + #if !defined(FULL_THROTTLE) if (_features & GF_AFTER_V6) { od->width = READ_LE_UINT16(&cdhd->v6.w); @@ -738,6 +751,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint byte *roomptr,*obcdptr,*obimptr,*searchptr; RoomHeader *roomhdr; ImageHeader *imhd; + int id2; if (findWhat&foCheckAlreadyLoaded && getObjectIndex(id) != -1) { fo->obcd = obcdptr = getOBCDFromObject(id); @@ -778,7 +792,15 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint } } else { cdhd = (CodeHeader*)findResourceData(MKID('CDHD'), obcdptr); - if ( READ_LE_UINT16(&cdhd->obj_id) == (uint16)id) { + if ( _features & GF_AFTER_V7) + id2 = READ_LE_UINT16(&(cdhd->v7.obj_id)); + else + if( _features & GF_AFTER_V6) + id2 = READ_LE_UINT16(&(cdhd->v6.obj_id)); + else + id2 = READ_LE_UINT16(&(cdhd->v5.obj_id)); + + if ( id2 == (uint16)id) { fo->cdhd = cdhd; fo->obcd = obcdptr; break; |