aboutsummaryrefslogtreecommitdiff
path: root/scumm/object.cpp
diff options
context:
space:
mode:
authorMax Horn2002-12-24 16:10:31 +0000
committerMax Horn2002-12-24 16:10:31 +0000
commit190685dc69dad12563ccf8ed3689ec1f34cff360 (patch)
tree540f3044d93a6049b8f3e862be44dceb59dff68b /scumm/object.cpp
parent22ab263b002c2f0946fa56c2463860f64b384278 (diff)
downloadscummvm-rg350-190685dc69dad12563ccf8ed3689ec1f34cff360.tar.gz
scummvm-rg350-190685dc69dad12563ccf8ed3689ec1f34cff360.tar.bz2
scummvm-rg350-190685dc69dad12563ccf8ed3689ec1f34cff360.zip
added a map from object names to object ids
svn-id: r6104
Diffstat (limited to 'scumm/object.cpp')
-rw-r--r--scumm/object.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/scumm/object.cpp b/scumm/object.cpp
index 25a526624f..a28f7fdd36 100644
--- a/scumm/object.cpp
+++ b/scumm/object.cpp
@@ -459,9 +459,9 @@ void Scumm::loadRoomObjects()
imhd = (ImageHeader *)findResourceData(MKID('IMHD'), ptr);
if (_features & GF_AFTER_V8)
- // FIXME - in v8, IMHD seems to contain no obj_id, but rather a name string
- // EVIL HACK to allow loading of the first COMI room
- obim_id = 1373 + i;
+ // In V8, IMHD has no obj_id, but rather a name string. We map the name
+ // back to an object id using a table derived from the DOBJ resource.
+ obim_id = _objectIDMap[imhd->v8.name];
else if (_features & GF_AFTER_V7)
obim_id = READ_LE_UINT16(&imhd->v7.obj_id);
else
@@ -901,11 +901,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint
}
} else {
cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), obcdptr);
- if (_features & GF_AFTER_V8)
- // FIXME - in v8, IMHD seems to contain no obj_id, but rather a name string
- id2 = 0;
-// id2 = READ_LE_UINT32(&(cdhd->v8.obj_id));
- else if (_features & GF_AFTER_V7)
+ 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));
@@ -942,9 +938,9 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint
}
} else {
if (_features & GF_AFTER_V8)
- // FIXME - in v8, IMHD seems to contain no obj_id, but rather a name string
- id3 = 0;
-// id3 = READ_LE_UINT32(&imhd->v8.obj_id);
+ // In V8, IMHD has no obj_id, but rather a name string. We map the name
+ // back to an object id using a table derived from the DOBJ resource.
+ id3 = _objectIDMap[imhd->v8.name];
else if (_features & GF_AFTER_V7)
id3 = READ_LE_UINT16(&imhd->v7.obj_id);
else