[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.411,2.412 object.cpp,1.215,1.216 scumm.h,1.555,1.556

Max Horn fingolfin at users.sourceforge.net
Fri Apr 1 05:06:47 CEST 2005


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

Modified Files:
	intern.h object.cpp scumm.h 
Log Message:
Turned setupRoomObject into a virtual method

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.411
retrieving revision 2.412
diff -u -d -r2.411 -r2.412
--- intern.h	1 Apr 2005 12:43:12 -0000	2.411
+++ intern.h	1 Apr 2005 13:05:38 -0000	2.412
@@ -197,6 +197,16 @@
 	void readMAXS();
 	
 	void readGlobalObjects();
+
+	void setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr = NULL);
+};
+
+class ScummEngine_v4 : public ScummEngine_v3 {
+public:
+	ScummEngine_v4(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v3(detector, syst, gs, md5sum) {}
+
+protected:
+	void loadCharset(int no);
 };
 
 class ScummEngine_v2 : public ScummEngine_v3 {
@@ -326,14 +336,6 @@
 	byte VAR_BACKUP_VERB;
 };
 
-class ScummEngine_v4 : public ScummEngine_v3 {
-public:
-	ScummEngine_v4(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v3(detector, syst, gs, md5sum) {}
-
-protected:
-	void loadCharset(int no);
-};
-
 class ScummEngine_v6 : public ScummEngine {
 	friend class Insane;
 

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.215
retrieving revision 1.216
diff -u -d -r1.215 -r1.216
--- object.cpp	1 Apr 2005 09:55:16 -0000	1.215
+++ object.cpp	1 Apr 2005 13:05:39 -0000	1.216
@@ -725,46 +725,44 @@
 	CHECK_HEAP
 }
 
-void ScummEngine::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
-	const CodeHeader *cdhd = NULL;
-	const ImageHeader *imhd = NULL;
-
+void ScummEngine_v3::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
 	assert(room);
+	const byte *ptr = room + od->OBCDoffset;
 
-	if (_features & GF_SMALL_HEADER) {
-
-		const byte *ptr = room + od->OBCDoffset;
+	if (_features & GF_OLD_BUNDLE)
+		ptr -= 2;
 
-		if (_features & GF_OLD_BUNDLE)
-			ptr -= 2;
+	od->obj_nr = READ_LE_UINT16(ptr + 6);
 
-		od->obj_nr = READ_LE_UINT16(ptr + 6);
+	od->x_pos = *(ptr + 9) * 8;
+	od->y_pos = ((*(ptr + 10)) & 0x7F) * 8;
 
-		od->x_pos = *(ptr + 9) * 8;
-		od->y_pos = ((*(ptr + 10)) & 0x7F) * 8;
+	od->parentstate = (*(ptr + 10) & 0x80) ? 1 : 0;
+	if (_version <= 2)
+		od->parentstate *= 8;
 
-		od->parentstate = (*(ptr + 10) & 0x80) ? 1 : 0;
-		if (_version <= 2)
-			od->parentstate *= 8;
+	od->width = *(ptr + 11) * 8;
 
-		od->width = *(ptr + 11) * 8;
+	od->parent = *(ptr + 12);
 
-		od->parent = *(ptr + 12);
+	if (_version <= 2) {
+		od->walk_x = *(ptr + 13) * 8;
+		od->walk_y = (*(ptr + 14) & 0x1f) * 8;
+		od->actordir = (*(ptr + 15)) & 7;
+		od->height = *(ptr + 15) & 0xf8;
+	} else {
+		od->walk_x = READ_LE_UINT16(ptr + 13);
+		od->walk_y = READ_LE_UINT16(ptr + 15);
+		od->actordir = (*(ptr + 17)) & 7;
+		od->height = *(ptr + 17) & 0xf8;
+	}
+}
 
-		if (_version <= 2) {
-			od->walk_x = *(ptr + 13) * 8;
-			od->walk_y = (*(ptr + 14) & 0x1f) * 8;
-			od->actordir = (*(ptr + 15)) & 7;
-			od->height = *(ptr + 15) & 0xf8;
-		} else {
-			od->walk_x = READ_LE_UINT16(ptr + 13);
-			od->walk_y = READ_LE_UINT16(ptr + 15);
-			od->actordir = (*(ptr + 17)) & 7;
-			od->height = *(ptr + 17) & 0xf8;
-		}
+void ScummEngine::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) {
+	const CodeHeader *cdhd = NULL;
+	const ImageHeader *imhd = NULL;
 
-		return;
-	}
+	assert(room);
 
 	if (searchptr == NULL) {
 		if (_version == 8)
@@ -791,7 +789,7 @@
 		od->y_pos = (int)READ_LE_UINT32(&imhd->v8.y_pos);
 		od->width = (uint)READ_LE_UINT32(&imhd->v8.width);
 		od->height = (uint)READ_LE_UINT32(&imhd->v8.height);
-		// HACK: This is done sinec an angle doesn't fit into a byte (360 > 256)
+		// HACK: This is done since an angle doesn't fit into a byte (360 > 256)
 		od->actordir = toSimpleDir(1, READ_LE_UINT32(&imhd->v8.actordir));
 		if (FROM_LE_32(imhd->v8.version) == 801)
 			od->flags = ((((byte)READ_LE_UINT32(&imhd->v8.flags)) & 16) == 0) ? Gdi::dbAllowMaskOr : 0;

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.555
retrieving revision 1.556
diff -u -d -r1.555 -r1.556
--- scumm.h	31 Mar 2005 21:39:05 -0000	1.555
+++ scumm.h	1 Apr 2005 13:05:40 -0000	1.556
@@ -724,7 +724,7 @@
 	ObjectIDMap _objectIDMap;
 	int _numObjectsInRoom;
 
-	void setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr = NULL);
+	virtual void setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr = NULL);
 	void markObjectRectAsDirty(int obj);
 	void loadFlObject(uint object, uint room);
 	void nukeFlObjects(int min, int max);





More information about the Scummvm-git-logs mailing list