[Scummvm-cvs-logs] CVS: scummvm/scumm akos.cpp,1.221,1.222

kirben kirben at users.sourceforge.net
Wed Apr 27 02:17:41 CEST 2005


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

Modified Files:
	akos.cpp 
Log Message:

Correct actor clipping in HE games.
The original games rect clipping was not as strict.


Index: akos.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/akos.cpp,v
retrieving revision 1.221
retrieving revision 1.222
diff -u -d -r1.221 -r1.222
--- akos.cpp	20 Apr 2005 01:33:40 -0000	1.221
+++ akos.cpp	27 Apr 2005 09:15:18 -0000	1.222
@@ -308,7 +308,6 @@
 		}
 	}
 
-
 	if (_vm->_heversion == 70) {
 		for (i = 0; i < size; i++)
 			palette[i] = _vm->_HEV7ActorPalette[palette[i]];
@@ -869,8 +868,22 @@
 	v1.scaleXstep = _mirror ? 1 : -1;
 
 	if (_vm->_heversion >= 71) {
-		if (_clipOverride.right > _clipOverride.left && _clipOverride.bottom > _clipOverride.top)
-			rect.clip(_clipOverride);
+		if (_clipOverride.right > _clipOverride.left && _clipOverride.bottom > _clipOverride.top) {
+			if (rect.left < _clipOverride.left)
+				rect.left = _clipOverride.left;
+
+			if (rect.right > _clipOverride.right)
+				rect.right = _clipOverride.right;
+
+			if (rect.top < _clipOverride.top)
+				rect.top = _clipOverride.top;
+
+			if (rect.bottom > _clipOverride.bottom)
+				rect.bottom = _clipOverride.bottom;
+		}
+
+		if (rect.isValidRect() == false)
+			return 1;
 	}
 
 	if (_actorHitMode) {
@@ -1140,8 +1153,22 @@
 	maxh = _out.h;
 
 	if (_vm->_heversion >= 71) {
-		if (_clipOverride.right > _clipOverride.left && _clipOverride.bottom > _clipOverride.top)
-			clip.clip(_clipOverride);
+		if (_clipOverride.right > _clipOverride.left && _clipOverride.bottom > _clipOverride.top) {
+			if (clip.left < _clipOverride.left)
+				clip.left = _clipOverride.left;
+
+			if (clip.right > _clipOverride.right)
+				clip.right = _clipOverride.right;
+
+			if (clip.top < _clipOverride.top)
+				clip.top = _clipOverride.top;
+
+			if (clip.bottom > _clipOverride.bottom)
+				clip.bottom = _clipOverride.bottom;
+		}
+
+		if (clip.isValidRect() == false)
+			return 0;
 	}
 
 	markRectAsDirty(clip);
@@ -1258,6 +1285,9 @@
 		dst.bottom -= diff;
 	}	
 
+	if (dst.isValidRect() == false)
+		return 0;
+
 	markRectAsDirty(dst);
 
 	if (_draw_top > dst.top)





More information about the Scummvm-git-logs mailing list