[Scummvm-cvs-logs] SF.net SVN: scummvm: [21355] scummvm/trunk/engines/scumm

kirben at users.sourceforge.net kirben at users.sourceforge.net
Sat Mar 18 02:31:02 CET 2006


Revision: 21355
Author:   kirben
Date:     2006-03-18 02:30:47 -0800 (Sat, 18 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21355&view=rev

Log Message:
-----------
The camera position is always set by loadRoomWithEgo opcode in HE games, through cameraFollows. Fixes glitches when changing rooms in fbear and other early games.

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/camera.cpp
    scummvm/trunk/engines/scumm/intern.h
    scummvm/trunk/engines/scumm/script_v6.cpp
    scummvm/trunk/engines/scumm/scumm.h
Modified: scummvm/trunk/engines/scumm/camera.cpp
===================================================================
--- scummvm/trunk/engines/scumm/camera.cpp	2006-03-18 04:41:34 UTC (rev 21354)
+++ scummvm/trunk/engines/scumm/camera.cpp	2006-03-18 10:30:47 UTC (rev 21355)
@@ -59,7 +59,7 @@
 		stopTalk();
 }
 
-void ScummEngine::setCameraFollows(Actor *a) {
+void ScummEngine::setCameraFollows(Actor *a, bool setCamera) {
 
 	int t, i;
 
@@ -75,7 +75,7 @@
 
 	t = a->_pos.x / 8 - _screenStartStrip;
 
-	if (t < camera._leftTrigger || t  > camera._rightTrigger)
+	if (t < camera._leftTrigger || t  > camera._rightTrigger || setCamera == true)
 		setCameraAt(a->_pos.x, 0);
 
 	for (i = 1; i < _numActors; i++) {
@@ -250,7 +250,7 @@
 	}
 }
 
-void ScummEngine_v7::setCameraFollows(Actor *a) {
+void ScummEngine_v7::setCameraFollows(Actor *a, bool setCamera) {
 
 	byte oldfollow = camera._follows;
 	int ax, ay;

Modified: scummvm/trunk/engines/scumm/intern.h
===================================================================
--- scummvm/trunk/engines/scumm/intern.h	2006-03-18 04:41:34 UTC (rev 21354)
+++ scummvm/trunk/engines/scumm/intern.h	2006-03-18 10:30:47 UTC (rev 21355)
@@ -831,7 +831,7 @@
 	virtual void readIndexBlock(uint32 blocktype, uint32 itemsize);
 
 	virtual void setCameraAt(int pos_x, int pos_y);
-	virtual void setCameraFollows(Actor *a);
+	virtual void setCameraFollows(Actor *a, bool setCamera = false);
 	virtual void moveCamera();
 	virtual void panCameraTo(int x, int y);
 

Modified: scummvm/trunk/engines/scumm/script_v6.cpp
===================================================================
--- scummvm/trunk/engines/scumm/script_v6.cpp	2006-03-18 04:41:34 UTC (rev 21354)
+++ scummvm/trunk/engines/scumm/script_v6.cpp	2006-03-18 10:30:47 UTC (rev 21355)
@@ -1347,7 +1347,7 @@
 
 	if (_game.version == 6) {
 		camera._cur.x = camera._dest.x = a->_pos.x;
-		setCameraFollows(a);
+		setCameraFollows(a, (_game.heversion >= 60));
 	}
 
 	_fullRedraw = true;

Modified: scummvm/trunk/engines/scumm/scumm.h
===================================================================
--- scummvm/trunk/engines/scumm/scumm.h	2006-03-18 04:41:34 UTC (rev 21354)
+++ scummvm/trunk/engines/scumm/scumm.h	2006-03-18 10:30:47 UTC (rev 21355)
@@ -1055,7 +1055,7 @@
 	void cameraMoved();
 	void setCameraAtEx(int at);
 	virtual void setCameraAt(int pos_x, int pos_y);
-	virtual void setCameraFollows(Actor *a);
+	virtual void setCameraFollows(Actor *a, bool setCamera = false);
 	virtual void moveCamera();
 	virtual void panCameraTo(int x, int y);
 	void clampCameraPos(Common::Point *pt);


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