[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.244,1.245 scumm.h,1.633,1.634

Max Horn fingolfin at users.sourceforge.net
Thu Jun 23 07:12:00 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21216

Modified Files:
	object.cpp scumm.h 
Log Message:
Fix foCheckAlreadyLoaded case in findObjectInRoom; this is not used in any SCUMM game, just added this for completeness (see patch tracker item #1222246)

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.244
retrieving revision 1.245
diff -u -d -r1.244 -r1.245
--- object.cpp	17 Jun 2005 17:11:30 -0000	1.244
+++ object.cpp	23 Jun 2005 14:10:51 -0000	1.245
@@ -235,7 +235,7 @@
 		if (state < 0)
 			state = 0;
 
-		ptr = getOBIMFromObject(od);
+		ptr = getOBIMFromObjectData(od);
 		if (!ptr) {
 			// FIXME: We used to assert here, but it seems that in the nexus
 			// in The Dig, this can happen, at least with old savegames, and
@@ -455,7 +455,7 @@
 	if (width == 0 || xpos > _screenEndStrip || xpos + width < _screenStartStrip)
 		return;
 
-	ptr = getOBIMFromObject(od);
+	ptr = getOBIMFromObjectData(od);
 
 	if (_features & GF_OLD_BUNDLE)
 		ptr += 0;
@@ -1046,7 +1046,7 @@
 	return 0;
 }
 
-const byte *ScummEngine::getOBIMFromObject(const ObjectData &od) {
+const byte *ScummEngine::getOBIMFromObjectData(const ObjectData &od) {
 	const byte *ptr;
 
 	if (od.fl_object_index) {
@@ -1100,7 +1100,7 @@
 	if (objnum == -1)
 		return 0;
 
-	ptr = getOBIMFromObject(_objs[objnum]);
+	ptr = getOBIMFromObjectData(_objs[objnum]);
 	imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), ptr);
 	if (!imhd)
 		return 0;
@@ -1182,17 +1182,18 @@
 	int id2;
 	int obim_id;
 
-	if (findWhat & foCheckAlreadyLoaded && getObjectIndex(id) != -1) {
-		if (_features & GF_OLD_BUNDLE) {
-			// I am not sure if this is even needed for old games...
-			// but using READ_BE_UINT32 below to determine the resource size
-			// definitely won't work with OLD_BUNDLE games
-			error("findObjectInRoom foCheckAlreadyLoaded NYI for GF_OLD_BUNDLE (id = %d, room = %d)", id, room);
+	id2 = getObjectIndex(id);
+	if (findWhat & foCheckAlreadyLoaded && id2 != -1) {
+		assert(_version >= 6);
+		if (findWhat & foCodeHeader) {
+			fo->obcd = obcdptr = getOBCDFromObject(id);
+			assert(obcdptr);
+			fo->cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), obcdptr);
+		}
+		if (findWhat & foImageHeader) {
+			fo->obim = obimptr = getOBIMFromObjectData(_objs[id2]);
+			assert(obimptr);
 		}
-		fo->obcd = obcdptr = getOBCDFromObject(id);
-		assert(obcdptr);
-		fo->obim = obimptr = obcdptr + READ_BE_UINT32(obcdptr + 4);
-		fo->cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), obcdptr);
 		return;
 	}
 
@@ -1529,7 +1530,7 @@
 	if (objnum == -1)
 		error("drawBlastObject: getObjectIndex on BlastObject %d failed", eo->number);
 
-	ptr = getOBIMFromObject(_objs[objnum]);
+	ptr = getOBIMFromObjectData(_objs[objnum]);
 	if (!ptr)
 		error("BlastObject object %d image not found", eo->number);
 

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.633
retrieving revision 1.634
diff -u -d -r1.633 -r1.634
--- scumm.h	13 Jun 2005 07:09:11 -0000	1.633
+++ scumm.h	23 Jun 2005 14:10:52 -0000	1.634
@@ -811,7 +811,7 @@
 
 	uint32 getOBCDOffs(int object) const;
 	byte *getOBCDFromObject(int obj);
-	const byte *getOBIMFromObject(const ObjectData &od);
+	const byte *getOBIMFromObjectData(const ObjectData &od);
 	const byte *getObjectImage(const byte *ptr, int state);
 	virtual int getObjectIdFromOBIM(const byte *obim);
 





More information about the Scummvm-git-logs mailing list