[Scummvm-cvs-logs] SF.net SVN: scummvm:[45618] scummvm/trunk/engines/tinsel

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Mon Nov 2 22:57:16 CET 2009


Revision: 45618
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45618&view=rev
Author:   fingolfin
Date:     2009-11-02 21:57:16 +0000 (Mon, 02 Nov 2009)

Log Message:
-----------
TINSEL: Add isValidObject(OBJECT *obj) function; make objectList & currentCD static vars; merge two logic blocks ('ifs') in DoRestoreSceneFrame

Modified Paths:
--------------
    scummvm/trunk/engines/tinsel/drives.h
    scummvm/trunk/engines/tinsel/multiobj.cpp
    scummvm/trunk/engines/tinsel/object.cpp
    scummvm/trunk/engines/tinsel/object.h
    scummvm/trunk/engines/tinsel/savescn.cpp

Modified: scummvm/trunk/engines/tinsel/drives.h
===================================================================
--- scummvm/trunk/engines/tinsel/drives.h	2009-11-02 21:56:29 UTC (rev 45617)
+++ scummvm/trunk/engines/tinsel/drives.h	2009-11-02 21:57:16 UTC (rev 45618)
@@ -45,8 +45,6 @@
 
 #define fAllCds	(fCd1|fCd2|fCd3|fCd4|fCd5|fCd6|fCd7|fCd8)
 
-extern char currentCD;
-
 void DoCdChange();
 
 void CdCD(CORO_PARAM);

Modified: scummvm/trunk/engines/tinsel/multiobj.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/multiobj.cpp	2009-11-02 21:56:29 UTC (rev 45617)
+++ scummvm/trunk/engines/tinsel/multiobj.cpp	2009-11-02 21:57:16 UTC (rev 45618)
@@ -31,9 +31,6 @@
 
 namespace Tinsel {
 
-// from object.c
-extern OBJECT *objectList;
-
 /**
  * Initialise a multi-part object using a list of images to init
  * each object piece. One object is created for each image in the list.
@@ -98,7 +95,7 @@
 
 void MultiInsertObject(OBJECT *pObjList, OBJECT *pInsObj) {
 	// validate object pointer
-	assert(pInsObj >= objectList && pInsObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pInsObj));
 
 	// for all the objects that make up this multi-part
 	do {
@@ -119,7 +116,7 @@
 
 void MultiDeleteObject(OBJECT *pObjList, OBJECT *pMultiObj) {
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// for all the objects that make up this multi-part
 	do {
@@ -140,7 +137,7 @@
 
 void MultiHideObject(OBJECT *pMultiObj) {
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// set master shape to null animation frame
 	pMultiObj->hShape = 0;
@@ -156,7 +153,7 @@
 
 void MultiHorizontalFlip(OBJECT *pFlipObj) {
 	// validate object pointer
-	assert(pFlipObj >= objectList && pFlipObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pFlipObj));
 
 	// for all the objects that make up this multi-part
 	do {
@@ -176,7 +173,7 @@
 
 void MultiVerticalFlip(OBJECT *pFlipObj) {
 	// validate object pointer
-	assert(pFlipObj >= objectList && pFlipObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pFlipObj));
 
 	// for all the objects that make up this multi-part
 	do {
@@ -200,7 +197,7 @@
 
 void MultiAdjustXY(OBJECT *pMultiObj, int deltaX, int deltaY) {
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	if (deltaX == 0 && deltaY == 0)
 		return;		// ignore no change
@@ -245,7 +242,7 @@
 
 void MultiMoveRelXY(OBJECT *pMultiObj, int deltaX, int deltaY) {
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	if (deltaX == 0 && deltaY == 0)
 		return;		// ignore no change
@@ -278,7 +275,7 @@
 	int curAniX, curAniY;	// objects current animation position
 
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// get master objects current animation position
 	GetAniPosition(pMultiObj, &curAniX, &curAniY);
@@ -301,7 +298,7 @@
 	int curAniX, curAniY;	// objects current animation position
 
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// get master objects current animation position
 	GetAniPosition(pMultiObj, &curAniX, &curAniY);
@@ -324,7 +321,7 @@
 	int curAniX, curAniY;	// objects current animation position
 
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// get master objects current animation position
 	GetAniPosition(pMultiObj, &curAniX, &curAniY);
@@ -345,7 +342,7 @@
 
 void MultiSetZPosition(OBJECT *pMultiObj, int newZ) {
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// for all the objects that make up this multi-part
 	do {
@@ -370,7 +367,7 @@
 	SCNHANDLE hFrame;
 
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// get objects current anim frame
 	hFrame = pMultiObj->hShape;
@@ -427,7 +424,7 @@
 	int left;
 
 	// validate object pointer
-	assert(pMulti >= objectList && pMulti <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMulti));
 
 	// init leftmost point to first object
 	left = fracToInt(pMulti->xPos);
@@ -456,7 +453,7 @@
 	int right;
 
 	// validate object pointer
-	assert(pMulti >= objectList && pMulti <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMulti));
 
 	// init right-most point to first object
 	right = fracToInt(pMulti->xPos) + pMulti->width;
@@ -485,7 +482,7 @@
 	int highest;
 
 	// validate object pointer
-	assert(pMulti >= objectList && pMulti <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMulti));
 
 	// init highest point to first object
 	highest = fracToInt(pMulti->yPos);
@@ -514,7 +511,7 @@
 	int lowest;
 
 	// validate object pointer
-	assert(pMulti >= objectList && pMulti <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMulti));
 
 	// init lowest point to first object
 	lowest = fracToInt(pMulti->yPos) + pMulti->height;
@@ -550,7 +547,7 @@
 
 void MultiForceRedraw(POBJECT pMultiObj) {
 	// validate object pointer
-	assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pMultiObj));
 
 	// for all the objects that make up this multi-part
 	do {

Modified: scummvm/trunk/engines/tinsel/object.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/object.cpp	2009-11-02 21:56:29 UTC (rev 45617)
+++ scummvm/trunk/engines/tinsel/object.cpp	2009-11-02 21:57:16 UTC (rev 45618)
@@ -37,7 +37,7 @@
 namespace Tinsel {
 
 // list of all objects
-OBJECT *objectList = 0;
+static OBJECT *objectList = 0;
 
 // pointer to free object list
 static OBJECT *pFreeObjects = 0;
@@ -130,6 +130,10 @@
 	return pObj;
 }
 
+bool isValidObject(OBJECT *obj) {
+	return (obj >= objectList && obj <= objectList + NUM_OBJECTS - 1);
+}
+
 /**
  * Copy one object to another.
  * @param pDest			Destination object
@@ -163,7 +167,7 @@
 	OBJECT *pPrev, *pObj;	// object list traversal pointers
 
 	// validate object pointer
-	assert(pInsObj >= objectList && pInsObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pInsObj));
 
 	for (pPrev = pObjList, pObj = pObjList->pNext; pObj != NULL; pPrev = pObj, pObj = pObj->pNext) {
 		// check Z order
@@ -196,7 +200,7 @@
 	const Common::Rect rcScreen(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
 
 	// validate object pointer
-	assert(pDelObj >= objectList && pDelObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pDelObj));
 
 #ifdef DEBUG
 	// one less object in use
@@ -331,7 +335,7 @@
  */
 void GetAniPosition(OBJECT *pObj, int *pPosX, int *pPosY) {
 	// validate object pointer
-	assert(pObj >= objectList && pObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pObj));
 
 	// get the animation offset of the object
 	GetAniOffset(pObj->hImg, pObj->flags, pPosX, pPosY);
@@ -419,7 +423,7 @@
  */
 void AnimateObjectFlags(OBJECT *pAniObj, int newflags, SCNHANDLE hNewImg) {
 	// validate object pointer
-	assert(pAniObj >= objectList && pAniObj <= objectList + NUM_OBJECTS - 1);
+	assert(isValidObject(pAniObj));
 
 	if (pAniObj->hImg != hNewImg
 		|| (pAniObj->flags & DMA_HARDFLAGS) != (newflags & DMA_HARDFLAGS)) {

Modified: scummvm/trunk/engines/tinsel/object.h
===================================================================
--- scummvm/trunk/engines/tinsel/object.h	2009-11-02 21:56:29 UTC (rev 45617)
+++ scummvm/trunk/engines/tinsel/object.h	2009-11-02 21:57:16 UTC (rev 45618)
@@ -130,6 +130,8 @@
 void FreeObject(		// place a object back on the free list
 	OBJECT *pFreeObj);	// object to free
 
+bool isValidObject(OBJECT *obj);
+
 void CopyObject(		// copy one object to another
 	OBJECT *pDest,		// destination object
 	OBJECT *pSrc);		// source object

Modified: scummvm/trunk/engines/tinsel/savescn.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/savescn.cpp	2009-11-02 21:56:29 UTC (rev 45617)
+++ scummvm/trunk/engines/tinsel/savescn.cpp	2009-11-02 21:57:16 UTC (rev 45618)
@@ -311,14 +311,15 @@
 		_vm->_sound->stopAllSamples();
 		ClearScreen();
 
-		// Master script only affected on restore game, not restore scene
-		if (TinselV2 && (sd == &sgData)) {
-			g_scheduler->killMatchingProcess(PID_MASTER_SCR);
-			KillGlobalProcesses();
-			FreeMasterInterpretContext();
-		}
+		if (TinselV2) {
 
-		if (TinselV2) {
+			// Master script only affected on restore game, not restore scene
+			if (sd == &sgData) {
+				g_scheduler->killMatchingProcess(PID_MASTER_SCR);
+				KillGlobalProcesses();
+				FreeMasterInterpretContext();
+			}
+
 			RestorePolygonStuff(sd->SavedPolygonStuff);
 
 			// Abandon temporarily if different CD


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list