[Scummvm-cvs-logs] SF.net SVN: scummvm:[44789] scummvm/trunk/engines/sci/gui

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Thu Oct 8 20:07:50 CEST 2009


Revision: 44789
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44789&view=rev
Author:   m_kiewitz
Date:     2009-10-08 18:07:49 +0000 (Thu, 08 Oct 2009)

Log Message:
-----------
SCI/newgui: kAnimate changes

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui.cpp
    scummvm/trunk/engines/sci/gui/gui_gfx.cpp

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-08 16:23:46 UTC (rev 44788)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-08 18:07:49 UTC (rev 44789)
@@ -402,9 +402,9 @@
 
 	// _gfx->AnimateSort();
 	if (old_picNotValid) {
-		_windowMgr->BeginUpdate(_windowMgr->_picWind);
+		//_windowMgr->BeginUpdate(_windowMgr->_picWind);
 		_gfx->AnimateUpdate(list);
-		_windowMgr->EndUpdate(_windowMgr->_picWind);
+		//_windowMgr->EndUpdate(_windowMgr->_picWind);
 	}
 
 	_gfx->AnimateDrawCels(list);

Modified: scummvm/trunk/engines/sci/gui/gui_gfx.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_gfx.cpp	2009-10-08 16:23:46 UTC (rev 44788)
+++ scummvm/trunk/engines/sci/gui/gui_gfx.cpp	2009-10-08 18:07:49 UTC (rev 44789)
@@ -1111,9 +1111,9 @@
 	GuiResourceId viewId;
 	GuiViewLoopNo loopNo;
 	GuiViewCelNo celNo;
-	int16 x, y, priority;
+	int16 x, y, z;
 	Common::Rect celRect;
-	uint16 mask;
+	uint16 signal;
 
 	while (curNode) {
 		curObject = curNode->value;
@@ -1124,8 +1124,8 @@
 		celNo = GET_SEL32V(curObject, cel);
 		x = GET_SEL32V(curObject, x);
 		y = GET_SEL32V(curObject, y);
-		priority = GET_SEL32V(curObject, priority);
-		mask = GET_SEL32V(curObject, signal);
+		z = GET_SEL32V(curObject, z);
+		signal = GET_SEL32V(curObject, signal);
 
 		// Get the corresponding view
 		view = new SciGuiView(_s->resMan, _screen, _palette, viewId);
@@ -1141,28 +1141,28 @@
 		}
 
 		// Create rect according to coordinates and given cel
-		view->getCelRect(loopNo, celNo, x, y, priority, &celRect);
+		view->getCelRect(loopNo, celNo, x, y, z, &celRect);
 		PUT_SEL32V(curObject, nsLeft, celRect.left);
 		PUT_SEL32V(curObject, nsTop, celRect.top);
 		PUT_SEL32V(curObject, nsRight, celRect.right);
 		PUT_SEL32V(curObject, nsBottom, celRect.bottom);
 
-		if (!(mask & SCI_ANIMATE_MASK_FIXEDPRIORITY))
+		if (!(signal & SCI_ANIMATE_MASK_FIXEDPRIORITY))
 			PUT_SEL32V(curObject, priority, 0); // CoordPri(y) FIXME
 		
-		if (mask & SCI_ANIMATE_MASK_NOUPDATE) {
-			if (mask & (SCI_ANIMATE_MASK_FORCEUPDATE | SCI_ANIMATE_MASK_VIEWUPDATED)
-				|| (mask & SCI_ANIMATE_MASK_HIDDEN && !(mask & SCI_ANIMATE_MASK_REMOVEVIEW))
-				|| (!(mask & SCI_ANIMATE_MASK_HIDDEN) && mask & SCI_ANIMATE_MASK_REMOVEVIEW)
-				|| (mask & SCI_ANIMATE_MASK_ALWAYSUPDATE))
+		if (signal & SCI_ANIMATE_MASK_NOUPDATE) {
+			if (signal & (SCI_ANIMATE_MASK_FORCEUPDATE | SCI_ANIMATE_MASK_VIEWUPDATED)
+				|| (signal & SCI_ANIMATE_MASK_HIDDEN && !(signal & SCI_ANIMATE_MASK_REMOVEVIEW))
+				|| (!(signal & SCI_ANIMATE_MASK_HIDDEN) && signal & SCI_ANIMATE_MASK_REMOVEVIEW)
+				|| (signal & SCI_ANIMATE_MASK_ALWAYSUPDATE))
 				old_picNotValid++;
-			mask &= 0xFFFF ^ SCI_ANIMATE_MASK_STOPUPDATE;
+			signal &= 0xFFFF ^ SCI_ANIMATE_MASK_STOPUPDATE;
 		} else {
-			if (mask & SCI_ANIMATE_MASK_STOPUPDATE || mask & SCI_ANIMATE_MASK_ALWAYSUPDATE)
+			if (signal & SCI_ANIMATE_MASK_STOPUPDATE || signal & SCI_ANIMATE_MASK_ALWAYSUPDATE)
 				old_picNotValid++;
-			mask &= 0xFFFF ^ SCI_ANIMATE_MASK_FORCEUPDATE;
+			signal &= 0xFFFF ^ SCI_ANIMATE_MASK_FORCEUPDATE;
 		}
-		PUT_SEL32V(curObject, signal, mask);
+		PUT_SEL32V(curObject, signal, signal);
 
 		curAddress = curNode->succ;
 		curNode = _s->_segMan->lookupNode(curAddress);
@@ -1177,6 +1177,8 @@
 	Node *curNode = _s->_segMan->lookupNode(curAddress);
 	reg_t curObject;
 
+	return sortedList;
+
 	// First convert the given List to Common::List
 	while (curNode) {
 		curObject = curNode->value;
@@ -1216,12 +1218,11 @@
 	GuiResourceId viewId[SCI_ANIMATE_MAXLIST];
 	GuiViewLoopNo loopNo[SCI_ANIMATE_MAXLIST];
 	GuiViewCelNo celNo[SCI_ANIMATE_MAXLIST];
-	int16 priority[SCI_ANIMATE_MAXLIST];
+	int16 z[SCI_ANIMATE_MAXLIST];
 	Common::Rect celRect[SCI_ANIMATE_MAXLIST];
 	uint16 paletteNo[SCI_ANIMATE_MAXLIST], signal[SCI_ANIMATE_MAXLIST];
 	reg_t bitsHandle;
 	Common::Rect rect;
-	uint16 tempHandle;
 
 	// first cache information about the list
 	// FIXME: perhaps make a list that is persistent in memory and resize it on demand...
@@ -1236,7 +1237,7 @@
 		celRect[listNr].top = GET_SEL32V(curObject, nsTop);
 		celRect[listNr].right = GET_SEL32V(curObject, nsRight);
 		celRect[listNr].bottom = GET_SEL32V(curObject, nsBottom);
-		priority[listNr] = GET_SEL32V(curObject, priority);
+		z[listNr] = GET_SEL32V(curObject, z);
 		paletteNo[listNr] = GET_SEL32V(curObject, palette);
 		signal[listNr] = GET_SEL32V(curObject, signal);
 		listNr++;
@@ -1251,8 +1252,7 @@
 		curObject = object[listNr];
 		if (signal[listNr] & SCI_ANIMATE_MASK_NOUPDATE) {
 			if (!(signal[listNr] & SCI_ANIMATE_MASK_REMOVEVIEW)) {
-				tempHandle = GET_SEL32V(curObject, underBits);
-				bitsHandle = make_reg(tempHandle << 16, tempHandle & 0xFFFF);
+				bitsHandle = GET_SEL32(curObject, underBits);
 				if (_screen->_picNotValid != 1) {
 					RestoreBits(bitsHandle);
 					//arr1[i] = 1;
@@ -1273,7 +1273,7 @@
 			curObject = object[listNr];
 
 			// draw corresponding cel
-			drawCel(viewId[listNr], loopNo[listNr], celNo[listNr], celRect[listNr].left, celRect[listNr].top, priority[listNr], paletteNo[listNr]);
+			drawCel(viewId[listNr], loopNo[listNr], celNo[listNr], celRect[listNr].left, celRect[listNr].top, z[listNr], paletteNo[listNr]);
 //			arr1[i] = 1;
 			signal[listNr] &= 0xFFFF ^ (SCI_ANIMATE_MASK_STOPUPDATE | SCI_ANIMATE_MASK_VIEWUPDATED | SCI_ANIMATE_MASK_NOUPDATE | SCI_ANIMATE_MASK_FORCEUPDATE);
 			if ((signal[listNr] & SCI_ANIMATE_MASK_IGNOREACTOR) == 0) {
@@ -1295,7 +1295,7 @@
 					bitsHandle = SaveBits(celRect[listNr], SCI_SCREEN_MASK_PRIORITY|SCI_SCREEN_MASK_PRIORITY);
 				else
 					bitsHandle = SaveBits(celRect[listNr], SCI_SCREEN_MASK_ALL);
-				PUT_SEL32V(curObject, underBits, bitsHandle.toUint16());
+				PUT_SEL32(curObject, underBits, bitsHandle);
 			}
 		}
 	}
@@ -1304,7 +1304,7 @@
 		curObject = object[listNr];
 		if (signal[listNr] & SCI_ANIMATE_MASK_NOUPDATE && !(signal[listNr] & SCI_ANIMATE_MASK_HIDDEN)) {
 			// draw corresponding cel
-			drawCel(viewId[listNr], loopNo[listNr], celNo[listNr], celRect[listNr].left, celRect[listNr].top, priority[listNr], paletteNo[listNr]);
+			drawCel(viewId[listNr], loopNo[listNr], celNo[listNr], celRect[listNr].left, celRect[listNr].top, z[listNr], paletteNo[listNr]);
 			// arr1[i] = 1;
 			if ((signal[listNr] & SCI_ANIMATE_MASK_IGNOREACTOR) == 0) {
 				rect = celRect[listNr];
@@ -1325,23 +1325,23 @@
 	GuiResourceId viewId;
 	GuiViewLoopNo loopNo;
 	GuiViewCelNo celNo;
-	int16 x, y, priority;
+	int16 x, y, z;
 	Common::Rect celRect;
-	uint16 mask, paletteNo;
+	uint16 signal, paletteNo;
 	reg_t bitsHandle;
 
 	while (curNode) {
 		curObject = curNode->value;
 
-		mask = GET_SEL32V(curObject, signal);
-		if (!(mask & (SCI_ANIMATE_MASK_NOUPDATE | SCI_ANIMATE_MASK_HIDDEN | SCI_ANIMATE_MASK_ALWAYSUPDATE))) {
+		signal = GET_SEL32V(curObject, signal);
+		if (!(signal & (SCI_ANIMATE_MASK_NOUPDATE | SCI_ANIMATE_MASK_HIDDEN | SCI_ANIMATE_MASK_ALWAYSUPDATE))) {
 			// Get animation data...
 			viewId = GET_SEL32V(curObject, view);
 			loopNo = GET_SEL32V(curObject, loop);
 			celNo = GET_SEL32V(curObject, cel);
 			x = GET_SEL32V(curObject, x);
 			y = GET_SEL32V(curObject, y);
-			priority = GET_SEL32V(curObject, priority);
+			z = GET_SEL32V(curObject, z);
 			paletteNo = GET_SEL32V(curObject, palette);
 
 			celRect.left = GET_SEL32V(curObject, nsLeft);
@@ -1351,15 +1351,15 @@
 
 			// Save background
 			bitsHandle = SaveBits(celRect, SCI_SCREEN_MASK_ALL);
-			PUT_SEL32V(curObject, underBits, bitsHandle.toUint16());
+			PUT_SEL32(curObject, underBits, bitsHandle);
 
 			// draw corresponding cel
-			drawCel(viewId, loopNo, celNo, celRect.left, celRect.top, priority, paletteNo);
+			drawCel(viewId, loopNo, celNo, celRect.left, celRect.top, z, paletteNo);
 
 			// arr1[inx] = 1;
-			if (mask & SCI_ANIMATE_MASK_REMOVEVIEW) {
-				mask &= 0xFFFF ^ GFX_REMOVEVIEW;
-				PUT_SEL32V(curObject, signal, mask);
+			if (signal & SCI_ANIMATE_MASK_REMOVEVIEW) {
+				signal &= 0xFFFF ^ GFX_REMOVEVIEW;
+				PUT_SEL32V(curObject, signal, signal);
 			}
 			
 //			HEAPHANDLE hNewCast = heapNewPtr(sizeof(sciCast), kDataCast);
@@ -1384,12 +1384,18 @@
 	reg_t curAddress = list->first;
 	Node *curNode = _s->_segMan->lookupNode(curAddress);
 	reg_t curObject;
-	uint16 mask;
+	uint16 signal;
 
 	while (curNode) {
 		curObject = curNode->value;
-		mask = GET_SEL32V(curObject, signal);
-		if (mask & SCI_ANIMATE_MASK_DISPOSEME) {
+		signal = GET_SEL32V(curObject, signal);
+
+		if ((signal & (SCI_ANIMATE_MASK_NOUPDATE | SCI_ANIMATE_MASK_REMOVEVIEW)) == 0) {
+			RestoreBits(GET_SEL32(curObject, underBits));
+			PUT_SEL32V(curObject, underBits, 0);
+		}
+
+		if (signal & SCI_ANIMATE_MASK_DISPOSEME) {
 			// Call .delete_ method of that object
 			invoke_selector(_s, curObject, _s->_kernel->_selectorCache.delete_, kContinueOnInvalidSelector, argv, argc, __FILE__, __LINE__, 0);
 			// Lookup node again, since the nodetable it was in may have been reallocated


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