[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.100,1.101 actor.h,1.22,1.23 boxes.cpp,1.32,1.33 debugger.cpp,1.44,1.45 object.cpp,1.100,1.101 script.cpp,1.94,1.95 script_v5.cpp,1.87,1.88 script_v6.cpp,1.119,1.120 script_v8.cpp,2.160,2.161 scumm.h,1.201,1.202 scummvm.cpp,2.167,2.168

Max Horn fingolfin at users.sourceforge.net
Tue May 20 13:43:04 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv3617

Modified Files:
	actor.cpp actor.h boxes.cpp debugger.cpp object.cpp script.cpp 
	script_v5.cpp script_v6.cpp script_v8.cpp scumm.h scummvm.cpp 
Log Message:
added enum's for the known actor/object claasses; extended putClass/getClass to translate the X/Y flip classes; made code use the new enum's; some other cleanup

Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -d -r1.100 -r1.101
--- actor.cpp	20 May 2003 19:35:40 -0000	1.100
+++ actor.cpp	20 May 2003 20:42:27 -0000	1.101
@@ -32,8 +32,15 @@
 
 #include <math.h>
 
-byte Actor::INVALID_BOX = 0;
+byte Actor::kInvalidBox = 0;
+Scumm *Actor::_vm = 0;
 
+void Actor::initActorClass(Scumm *scumm) {
+	_vm = scumm;
+	if (_vm->_features & GF_SMALL_HEADER) {
+		kInvalidBox = 255;
+	}
+}
 
 void Actor::initActor(int mode) {
 	if (mode == 1) {
@@ -71,30 +78,28 @@
 	forceClip = 0;
 	ignoreTurns = false;
 	
-	initFrame = 1;
-	walkFrame = 2;
-	standFrame = 3;
-	talkFrame1 = 4;
-	talkFrame2 = 5;
+	if (_vm->_features & GF_AFTER_V2) {
+		initFrame = 2;
+		walkFrame = 0;
+		standFrame = 1;
+		talkFrame1 = 5;
+		talkFrame2 = 4;
+	} else {
+		initFrame = 1;
+		walkFrame = 2;
+		standFrame = 3;
+		talkFrame1 = 4;
+		talkFrame2 = 5;
+	}
 
 	walk_script = 0;
 	talk_script = 0;
 
-	if (_vm) {
-		if (_vm->_features & GF_AFTER_V2) {
-			initFrame = 2;
-			walkFrame = 0;
-			standFrame = 1;
-			talkFrame1 = 5;
-			talkFrame2 = 4;
-		}
-		_vm->_classData[number] = (_vm->_features & GF_AFTER_V7) ? _vm->_classData[0] : 0;
-	}
+	_vm->_classData[number] = (_vm->_features & GF_AFTER_V7) ? _vm->_classData[0] : 0;
 }
 
 void Actor::stopActorMoving() {
-	if (_vm)
-		_vm->stopScriptNr(walk_script);
+	_vm->stopScriptNr(walk_script);
 	moving = 0;
 }
 
@@ -219,12 +224,12 @@
 		// for other games besides Loom!
 
 		// Check for X-Flip
-		if ((flags & kBoxXFlip) || isInClass((_vm->_gameId == GID_LOOM256 || _vm->_gameId == GID_LOOM) ? 19 : 30)) {
+		if ((flags & kBoxXFlip) || isInClass(kObjectClassXFlip)) {
 			dir = 360 - dir;
 			flipX = !flipX;
 		}
 		// Check for Y-Flip
-		if ((flags & kBoxYFlip) || isInClass((_vm->_gameId == GID_LOOM256 || _vm->_gameId == GID_LOOM) ? 18 : 29)) {
+		if ((flags & kBoxYFlip) || isInClass(kObjectClassYFlip)) {
 			dir = 180 - dir;
 			flipY = !flipY;
 		}
@@ -605,7 +610,7 @@
 
 	abr.x = dstX;
 	abr.y = dstY;
-	abr.dist = INVALID_BOX;
+	abr.dist = kInvalidBox;
 
 	if (ignoreBoxes)
 		return abr;
@@ -618,14 +623,14 @@
 			return abr;
 
 		bestDist = (uint) 0xFFFF;
-		bestBox = INVALID_BOX;
+		bestBox = kInvalidBox;
 
 		// We iterate (backwards) over all boxes, searching the one closes
 		// to the desired coordinates.
 		for (box = numBoxes; box >= firstValidBox; box--) {
 			flags = _vm->getBoxFlags(box);
 
-			if (flags & kBoxInvisible && (!(flags & kBoxPlayerOnly) || isInClass(31)))
+			if (flags & kBoxInvisible && !(flags & kBoxPlayerOnly && !isInClass(kObjectClassPlayer)))
 				continue;
 			
 			// For increased performance, we perform a quick test if
@@ -691,7 +696,7 @@
 		stopActorMoving();
 	}
 
-	if (walkbox != INVALID_BOX) {
+	if (walkbox != kInvalidBox) {
 		byte flags = _vm->getBoxFlags(walkbox);
 		if (flags & 7) {
 			turnToDirection(facing);
@@ -908,7 +913,7 @@
 
 		if (forceClip)
 			cr._zbuf = forceClip;
-		else if (isInClass(20))
+		else if (isInClass(kObjectClassNeverClip))
 			cr._zbuf = 0;
 		else {
 			cr._zbuf = _vm->getMaskFromBox(walkbox);
@@ -1056,7 +1061,8 @@
 	for (i = 1; i < _numActors; i++) {
 		Actor *a = derefActor(i);
 		assert(a->number == i);
-		if (testGfxUsageBit(x >> 3, i) && !getClass(i, 32) && y >= a->top && y <= a->bottom) {
+		if (testGfxUsageBit(x >> 3, i) && !getClass(i, kObjectClassUntouchable)
+			&& y >= a->top && y <= a->bottom) {
 			return i;
 		}
 	}
@@ -1182,8 +1188,8 @@
 	}
 
 	if (ignoreBoxes) {
-		abr.dist = INVALID_BOX;
-		walkbox = INVALID_BOX;
+		abr.dist = kInvalidBox;
+		walkbox = kInvalidBox;
 	} else {
 		if (_vm->checkXYInBoxBounds(walkdata.destbox, abr.x, abr.y)) {
 			abr.dist = walkdata.destbox;
@@ -1294,7 +1300,7 @@
 	do {
 		moving &= ~MF_NEW_LEG;
 
-		if (walkbox == INVALID_BOX) {
+		if (walkbox == kInvalidBox) {
 			setBox(walkdata.destbox);
 			walkdata.curbox = walkdata.destbox;
 			break;
@@ -1366,7 +1372,7 @@
 	do {
 		moving &= ~MF_NEW_LEG;
 
-		if (walkbox == INVALID_BOX) {
+		if (walkbox == kInvalidBox) {
 			walkbox = walkdata.destbox;
 			walkdata.curbox = walkdata.destbox;
 			break;
@@ -1385,7 +1391,7 @@
 		// FIXME: not sure if this is needed in non-Zak games, but I think it shouldn't
 		// hurt there either.
 		int flags = _vm->getBoxFlags(next_box);
-		if (flags & kBoxLocked && (!(flags & kBoxPlayerOnly) || isInClass(31))) {
+		if (flags & kBoxLocked && !(flags & kBoxPlayerOnly && !isInClass(kObjectClassPlayer))) {
 			moving |= MF_LAST_LEG;
 			return;
 		}
@@ -1509,22 +1515,10 @@
 }
 
 void Actor::classChanged(int cls, bool value) {
-	switch(cls) {
-	case 20:	// Never clip
-		break;
-	case 21:	// Always clip
+	if (cls == kObjectClassAlwaysClip)
 		forceClip = value;
-		break;
-	case 22:	// Ignore boxes
+	if (cls == kObjectClassIgnoreBoxes)
 		ignoreBoxes = value;
-		break;
-	case 29:	// Y flip
-		break;
-	case 30:	// X flip
-		break;
-	case 31:	// ??
-		break;
-	}
 }
 
 bool Actor::isInClass(int cls) {

Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- actor.h	20 May 2003 19:35:40 -0000	1.22
+++ actor.h	20 May 2003 20:42:27 -0000	1.23
@@ -70,6 +70,11 @@
 class Actor {
 
 public:
+	static byte kInvalidBox;
+	
+	static void initActorClass(Scumm *scumm);
+
+public:
 	int x, y, top, bottom;
 	int elevation;
 	uint width;
@@ -102,18 +107,14 @@
 	uint16 sound[8];
 	CostumeData cost;
 	byte palette[256];
-	
-	static byte INVALID_BOX;
-
 protected:
-	Scumm *_vm;
+	static Scumm *_vm;
 
 public:
 
 	// Constructor, sets all data to 0
 	Actor() {
-		_vm = 0;
-		
+		assert(_vm != 0);
 		top = bottom = 0;
 		number = 0;
 		needRedraw = needBgReset = costumeNeedsInit = visible = false;
@@ -130,9 +131,6 @@
 		initActor(1);
 	}
 	
-	void initActorClass(Scumm *scumm) {
-		_vm = scumm;
-	}
 //protected:
 	void hideActor();
 	void showActor();
@@ -192,7 +190,7 @@
 	}
 	
 	void classChanged(int cls, bool value);
-
+	
 protected:
 	bool isInClass(int cls);
 };

Index: boxes.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/boxes.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- boxes.cpp	20 May 2003 12:54:04 -0000	1.32
+++ boxes.cpp	20 May 2003 20:42:27 -0000	1.33
@@ -280,7 +280,7 @@
 bool Scumm::checkXYInBoxBounds(int b, int x, int y) {
 	BoxCoords box;
 
-	if (b < 0 || b == Actor::INVALID_BOX)
+	if (b < 0 || b == Actor::kInvalidBox)
 		return false;
 
 	getBoxCoordinates(b, &box);
@@ -571,10 +571,10 @@
 	if (from == to)
 		return to;
 
-	if (to == Actor::INVALID_BOX)
+	if (to == Actor::kInvalidBox)
 		return -1;
 
-	if (from == Actor::INVALID_BOX)
+	if (from == Actor::kInvalidBox)
 		return to;
 	
 	assert(from < numOfBoxes);

Index: debugger.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/debugger.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- debugger.cpp	19 May 2003 11:31:33 -0000	1.44
+++ debugger.cpp	20 May 2003 20:42:27 -0000	1.45
@@ -638,7 +638,7 @@
 			_s->addObjectToInventory(obj, atoi(argv[3]));
 
 		_s->putOwner(obj, _s->VAR(_s->VAR_EGO));
-		_s->putClass(obj, 32, 1);
+		_s->putClass(obj, kObjectClassUntouchable, 1);
 		_s->putState(obj, 1);
 		_s->removeObjectFromRoom(obj);
 		_s->clearDrawObjectQueue();

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -d -r1.100 -r1.101
--- object.cpp	20 May 2003 19:35:39 -0000	1.100
+++ object.cpp	20 May 2003 20:42:27 -0000	1.101
@@ -34,12 +34,24 @@
 	checkRange(32, 1, cls, "Class %d out of range in getClass");
 
 	if (_features & GF_SMALL_HEADER) {
-		if (cls == 31)							// CLASS_PLAYERONLY
-			cls = 23;
-
-		if (cls == 32)							// CLASS_TOUCHABLE
-			cls = 24;
+		// Translate the new (V5) object classes to the old classes
+		// (for those which differ).
+		switch (cls) {
+			case kObjectClassUntouchable:
+				cls = 24;
+				break;
+			case kObjectClassPlayer:
+				cls = 23;
+				break;
+			case kObjectClassXFlip:
+				cls = 19;
+				break;
+			case kObjectClassYFlip:
+				cls = 18;
+				break;
+		}
 	}
+
 	return (_classData[obj] & (1 << (cls - 1))) != 0;
 }
 
@@ -50,20 +62,30 @@
 	checkRange(32, 1, cls, "Class %d out of range in putClass");
 
 	if (_features & GF_SMALL_HEADER) {
-		if (cls == 31)							// CLASS_PLAYERONLY
-			cls = 23;
-
-		if (cls == 32)							// CLASS_TOUCHABLE
-			cls = 24;
-
-		// FIXME: It isn't enough for the Indy3 intro to make the
-		// little trains ignore boxes (class 22), they have to always
-		// clip (class 21) as well. Is this yet another walkbox 0
-		// error?
-		if (_gameId == GID_INDY3_256 && cls == 22 && _currentRoom == 76)
-			putClass(obj, 21, set);
+		// Translate the new (V5) object classes to the old classes
+		// (for those which differ).
+		switch (cls) {
+			case kObjectClassUntouchable:
+				cls = 24;
+				break;
+			case kObjectClassPlayer:
+				cls = 23;
+				break;
+			case kObjectClassXFlip:
+				cls = 19;
+				break;
+			case kObjectClassYFlip:
+				cls = 18;
+				break;
+		}
 	}
 
+	// FIXME: It isn't enough for the Indy3 intro to make the
+	// little trains ignore boxes, they have to always clip as
+	// well. Is this yet another walkbox 0 error?
+	if (_gameId == GID_INDY3_256 && cls == kObjectClassIgnoreBoxes && _currentRoom == 76)
+		putClass(obj, kObjectClassAlwaysClip, set);
+
 	if (set)
 		_classData[obj] |= (1 << (cls - 1));
 	else
@@ -256,7 +278,7 @@
 	const int mask = (_features & GF_AFTER_V2) ? 0x8 : 0xF;
 
 	for (i = 1; i < _numLocalObjects; i++) {
-		if ((_objs[i].obj_nr < 1) || getClass(_objs[i].obj_nr, 32))
+		if ((_objs[i].obj_nr < 1) || getClass(_objs[i].obj_nr, kObjectClassUntouchable))
 			continue;
 		if (_features & GF_AFTER_V2 && _objs[i].state & 0x2)
 			continue;
@@ -403,7 +425,7 @@
 		byte flags = Gdi::dbAllowMaskOr;
 		// Sam & Max needs this to fix object-layering problems with
 		// the inventory and conversation icons.
-		if ((_features & GF_AFTER_V7 || _gameId == GID_SAMNMAX) && getClass(od->obj_nr, 22))
+		if ((_features & GF_AFTER_V7 || _gameId == GID_SAMNMAX) && getClass(od->obj_nr, kObjectClassIgnoreBoxes))
 			flags |= Gdi::dbDrawMaskOnAll;
 		gdi.drawBitmap(ptr, &virtscr[0], x, ypos, width << 3, height, x - xpos, numstrip, flags);
 	}

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -d -r1.94 -r1.95
--- script.cpp	20 May 2003 15:41:07 -0000	1.94
+++ script.cpp	20 May 2003 20:42:27 -0000	1.95
@@ -76,6 +76,121 @@
 	runScriptNested(slot);
 }
 
+void Scumm::runVerbCode(int object, int entry, bool freezeResistant, bool recursive, int *vars) {
+	ScriptSlot *s;
+	uint32 obcd;
+	int slot, where, offs;
+
+	if (!object)
+		return;
+
+	if (!recursive)
+		stopObjectScript(object);
+
+	where = whereIsObject(object);
+
+	if (where == WIO_NOT_FOUND) {
+		warning("Code for object %d not in room %d", object, _roomResource);
+		return;
+	}
+
+	obcd = getOBCDOffs(object);
+	slot = getScriptSlot();
+
+	offs = getVerbEntrypoint(object, entry);
+	if (offs == 0)
+		return;
+
+	s = &vm.slot[slot];
+	s->number = object;
+	s->offs = obcd + offs;
+	s->status = ssRunning;
+	s->where = where;
+	s->freezeResistant = freezeResistant;
+	s->recursive = recursive;
+	s->freezeCount = 0;
+	s->delayFrameCount = 0;
+
+	initializeLocals(slot, vars);
+
+	runScriptNested(slot);
+}
+
+void Scumm::initializeLocals(int slot, int *vars) {
+	int i;
+	if (!vars) {
+		for (i = 0; i < 16; i++)
+			vm.localvar[slot][i] = 0;
+	} else {
+		for (i = 0; i < 16; i++)
+			vm.localvar[slot][i] = vars[i];
+	}
+}
+
+int Scumm::getVerbEntrypoint(int obj, int entry) {
+	byte *objptr, *verbptr;
+	int verboffs;
+
+	if (whereIsObject(obj) == WIO_NOT_FOUND)
+		return 0;
+
+	objptr = getOBCDFromObject(obj);
+	assert(objptr);
+
+	if (_features & GF_AFTER_V2)
+		verbptr = objptr + 15;
+	else if (_features & GF_OLD_BUNDLE)
+		verbptr = objptr + 17;
+	else if (_features & GF_SMALL_HEADER)
+		verbptr = objptr + 19;
+	else
+		verbptr = findResource(MKID('VERB'), objptr);
+
+	assert(verbptr);
+
+	verboffs = verbptr - objptr;
+
+	if (!(_features & GF_SMALL_HEADER))
+		verbptr += _resourceHeaderSize;
+
+	if (_features & GF_AFTER_V8) {
+		uint32 *ptr = (uint32 *)verbptr;
+		uint32 verb;
+		do {
+			verb = READ_LE_UINT32(ptr);
+			if (!verb)
+				return 0;
+			if (verb == (uint32)entry || verb == 0xFFFFFFFF)
+				break;
+			ptr += 2;
+		} while (1);
+		return verboffs + 8 + READ_LE_UINT32(ptr + 1);
+	} if (_features & GF_AFTER_V2) {
+		do {
+			if (!*verbptr)
+				return 0;
+			if (*verbptr == entry || *verbptr == 0xFF)
+				break;
+			verbptr += 2;
+		} while (1);
+	
+		return *(verbptr + 1);
+	} else {
+		do {
+			if (!*verbptr)
+				return 0;
+			if (*verbptr == entry || *verbptr == 0xFF)
+				break;
+			verbptr += 3;
+		} while (1);
+	
+		if (_features & GF_SMALL_HEADER)
+			return READ_LE_UINT16(verbptr + 1);
+		else
+			return verboffs + READ_LE_UINT16(verbptr + 1);
+	}
+}
+
 /* Stop script 'script' */
 void Scumm::stopScriptNr(int script) {
 	ScriptSlot *ss;
@@ -791,121 +906,6 @@
 				ss->delay = 0;
 			}
 		}
-	}
-}
-
-void Scumm::runVerbCode(int object, int entry, bool freezeResistant, bool recursive, int *vars) {
-	ScriptSlot *s;
-	uint32 obcd;
-	int slot, where, offs;
-
-	if (!object)
-		return;
-
-	if (!recursive)
-		stopObjectScript(object);
-
-	where = whereIsObject(object);
-
-	if (where == WIO_NOT_FOUND) {
-		warning("Code for object %d not in room %d", object, _roomResource);
-		return;
-	}
-
-	obcd = getOBCDOffs(object);
-	slot = getScriptSlot();
-
-	offs = getVerbEntrypoint(object, entry);
-	if (offs == 0)
-		return;
-
-	s = &vm.slot[slot];
-	s->number = object;
-	s->offs = obcd + offs;
-	s->status = ssRunning;
-	s->where = where;
-	s->freezeResistant = freezeResistant;
-	s->recursive = recursive;
-	s->freezeCount = 0;
-	s->delayFrameCount = 0;
-
-	initializeLocals(slot, vars);
-
-	runScriptNested(slot);
-}
-
-void Scumm::initializeLocals(int slot, int *vars) {
-	int i;
-	if (!vars) {
-		for (i = 0; i < 16; i++)
-			vm.localvar[slot][i] = 0;
-	} else {
-		for (i = 0; i < 16; i++)
-			vm.localvar[slot][i] = vars[i];
-	}
-}
-
-int Scumm::getVerbEntrypoint(int obj, int entry) {
-	byte *objptr, *verbptr;
-	int verboffs;
-
-	if (whereIsObject(obj) == WIO_NOT_FOUND)
-		return 0;
-
-	objptr = getOBCDFromObject(obj);
-	assert(objptr);
-
-	if (_features & GF_AFTER_V2)
-		verbptr = objptr + 15;
-	else if (_features & GF_OLD_BUNDLE)
-		verbptr = objptr + 17;
-	else if (_features & GF_SMALL_HEADER)
-		verbptr = objptr + 19;
-	else
-		verbptr = findResource(MKID('VERB'), objptr);
-
-	assert(verbptr);
-
-	verboffs = verbptr - objptr;
-
-	if (!(_features & GF_SMALL_HEADER))
-		verbptr += _resourceHeaderSize;
-
-	if (_features & GF_AFTER_V8) {
-		uint32 *ptr = (uint32 *)verbptr;
-		uint32 verb;
-		do {
-			verb = READ_LE_UINT32(ptr);
-			if (!verb)
-				return 0;
-			if (verb == (uint32)entry || verb == 0xFFFFFFFF)
-				break;
-			ptr += 2;
-		} while (1);
-		return verboffs + 8 + READ_LE_UINT32(ptr + 1);
-	} if (_features & GF_AFTER_V2) {
-		do {
-			if (!*verbptr)
-				return 0;
-			if (*verbptr == entry || *verbptr == 0xFF)
-				break;
-			verbptr += 2;
-		} while (1);
-	
-		return *(verbptr + 1);
-	} else {
-		do {
-			if (!*verbptr)
-				return 0;
-			if (*verbptr == entry || *verbptr == 0xFF)
-				break;
-			verbptr += 3;
-		} while (1);
-	
-		if (_features & GF_SMALL_HEADER)
-			return READ_LE_UINT16(verbptr + 1);
-		else
-			return verboffs + READ_LE_UINT16(verbptr + 1);
 	}
 }
 

Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -d -r1.87 -r1.88
--- script_v5.cpp	20 May 2003 16:13:34 -0000	1.87
+++ script_v5.cpp	20 May 2003 20:42:27 -0000	1.88
@@ -1435,7 +1435,7 @@
 		room = _roomResource;
 	addObjectToInventory(obj, room);
 	putOwner(obj, VAR(VAR_EGO));
-	putClass(obj, 32, 1);
+	putClass(obj, kObjectClassUntouchable, 1);
 	putState(obj, 1);
 	removeObjectFromRoom(obj);
 	clearDrawObjectQueue();
@@ -2637,7 +2637,7 @@
 	addObjectToInventory(obj, _roomResource);
 	removeObjectFromRoom(obj);
 	putOwner(obj, VAR(VAR_EGO));
-	putClass(obj, 32, 1);
+	putClass(obj, kObjectClassUntouchable, 1);
 	putState(obj, 1);
 	clearDrawObjectQueue();
 	runHook(1);

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -d -r1.119 -r1.120
--- script_v6.cpp	19 May 2003 15:40:34 -0000	1.119
+++ script_v6.cpp	20 May 2003 20:42:28 -0000	1.120
@@ -1120,7 +1120,7 @@
 
 	addObjectToInventory(obj, room);
 	putOwner(obj, VAR(VAR_EGO));
-	putClass(obj, 32, 1);
+	putClass(obj, kObjectClassUntouchable, 1);
 	putState(obj, 1);
 	removeObjectFromRoom(obj);
 	clearDrawObjectQueue();

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.160
retrieving revision 2.161
diff -u -d -r2.160 -r2.161
--- script_v8.cpp	18 May 2003 21:14:49 -0000	2.160
+++ script_v8.cpp	20 May 2003 20:42:28 -0000	2.161
@@ -1540,7 +1540,7 @@
 
 			if (eo->posX <= x && eo->width + eo->posX > x &&
 			    eo->posY <= y && eo->height + eo->posY > y) {
-                		if (!getClass(eo->number, 32)) {
+                		if (!getClass(eo->number, kObjectClassUntouchable)) {
 					push(eo->number);
 					return;
 				}

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.201
retrieving revision 1.202
diff -u -d -r1.201 -r1.202
--- scumm.h	19 May 2003 11:31:35 -0000	1.201
+++ scumm.h	20 May 2003 20:42:28 -0000	1.202
@@ -61,6 +61,16 @@
 	KEY_SET_OPTIONS = 3456 // WinCE
 };
 
+enum ObjectClass {
+	kObjectClassNeverClip = 20,
+	kObjectClassAlwaysClip = 21,
+	kObjectClassIgnoreBoxes = 22,
+	kObjectClassYFlip = 29,
+	kObjectClassXFlip = 30,
+	kObjectClassPlayer = 31,	// Actor is controlled by the player
+	kObjectClassUntouchable = 32
+};
+
 #include "gfx.h"
 #include "boxes.h"
 

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.167
retrieving revision 2.168
diff -u -d -r2.167 -r2.168
--- scummvm.cpp	20 May 2003 16:36:26 -0000	2.167
+++ scummvm.cpp	20 May 2003 20:42:28 -0000	2.168
@@ -542,9 +542,6 @@
 	_hexdumpScripts = false;
 	_showStack = false;
 
-	if (_features & GF_SMALL_HEADER)
-		Actor::INVALID_BOX = 255;
-
 	if (_gameId == GID_ZAK256) {	// FmTowns is 320x240
 		_screenWidth = 320;
 		_screenHeight = 240;
@@ -695,11 +692,11 @@
 	setupCursor();
 	
 	// Allocate and Initialize actors
+	Actor::initActorClass(this);
 	_actors = new Actor[_numActors];
 	for (i = 1; i < _numActors; i++) {
 		a = derefActor(i);
 		a->number = i;
-		a->initActorClass(this);
 		a->initActor(1);
 	}
 





More information about the Scummvm-git-logs mailing list