diff options
author | Travis Howell | 2006-03-18 10:30:47 +0000 |
---|---|---|
committer | Travis Howell | 2006-03-18 10:30:47 +0000 |
commit | a379fe424c02cff2427750c0f5ac1898c7fe93df (patch) | |
tree | 6e920d7b8bba51826548d0e44b5390ae3400c18e /engines | |
parent | 05ee5cf2bdca6b97b6cd7ce93bfbe80cfc9a61fe (diff) | |
download | scummvm-rg350-a379fe424c02cff2427750c0f5ac1898c7fe93df.tar.gz scummvm-rg350-a379fe424c02cff2427750c0f5ac1898c7fe93df.tar.bz2 scummvm-rg350-a379fe424c02cff2427750c0f5ac1898c7fe93df.zip |
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.
svn-id: r21355
Diffstat (limited to 'engines')
-rw-r--r-- | engines/scumm/camera.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/intern.h | 2 | ||||
-rw-r--r-- | engines/scumm/script_v6.cpp | 2 | ||||
-rw-r--r-- | engines/scumm/scumm.h | 2 |
4 files changed, 6 insertions, 6 deletions
diff --git a/engines/scumm/camera.cpp b/engines/scumm/camera.cpp index 8521bd96a2..45df41d20c 100644 --- a/engines/scumm/camera.cpp +++ b/engines/scumm/camera.cpp @@ -59,7 +59,7 @@ void ScummEngine::setCameraAt(int pos_x, int pos_y) { stopTalk(); } -void ScummEngine::setCameraFollows(Actor *a) { +void ScummEngine::setCameraFollows(Actor *a, bool setCamera) { int t, i; @@ -75,7 +75,7 @@ void ScummEngine::setCameraFollows(Actor *a) { 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::setCameraAt(int pos_x, int pos_y) { } } -void ScummEngine_v7::setCameraFollows(Actor *a) { +void ScummEngine_v7::setCameraFollows(Actor *a, bool setCamera) { byte oldfollow = camera._follows; int ax, ay; diff --git a/engines/scumm/intern.h b/engines/scumm/intern.h index 72a8eb53ba..cd666c1049 100644 --- a/engines/scumm/intern.h +++ b/engines/scumm/intern.h @@ -831,7 +831,7 @@ protected: 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); diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp index 5f7e436f15..d5784c58f9 100644 --- a/engines/scumm/script_v6.cpp +++ b/engines/scumm/script_v6.cpp @@ -1347,7 +1347,7 @@ void ScummEngine_v6::o6_loadRoomWithEgo() { if (_game.version == 6) { camera._cur.x = camera._dest.x = a->_pos.x; - setCameraFollows(a); + setCameraFollows(a, (_game.heversion >= 60)); } _fullRedraw = true; diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index 48f8081f2d..54b5d8356c 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -1055,7 +1055,7 @@ protected: 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); |