[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