hum, why was this not commited by CVS?

svn-id: r10175
This commit is contained in:
Max Horn 2003-09-11 14:11:31 +00:00
parent 41a8905519
commit 6c4d6889f5
2 changed files with 19 additions and 8 deletions

View File

@ -1272,7 +1272,7 @@ void Scumm_v2::o2_lights() {
void Scumm_v2::o2_loadRoomWithEgo() {
Actor *a;
int obj, room, x, y;
int obj, room, x, y, x2, y2, dir;
obj = getVarOrDirectWord(0x80);
room = getVarOrDirectByte(0x40);
@ -1287,6 +1287,10 @@ void Scumm_v2::o2_loadRoomWithEgo() {
startScene(a->room, a, obj);
getObjectXYPos(obj, x2, y2, dir);
a->putActor(x2, y2, _currentRoom);
a->setDirection(dir); // TODO: Original seems to "flip" dir here, need to investigate?
camera._dest.x = camera._cur.x = a->x;
setCameraAt(a->x, a->y);
setCameraFollows(a);

View File

@ -1452,19 +1452,13 @@ void Scumm_v5::o5_loadRoom() {
if (!(_features & GF_SMALL_HEADER) || room != _currentRoom)
startScene(room, 0, 0);
// FIXME: Incredibly nasty evil hack to fix bug #770699 (During meeting
// with Guru, script 42 changes between room 0 and room 19 to create
// 'some time later' effects. On switching back to room 19, the camera
// reverts to 0,0 - Added for 0.5.0, should be fixed properly
if (_gameId == GID_ZAK && (vm.slot[_currentScript].number == 42) && (room == 19))
setCameraAt(480, 0);
_fullRedraw = 1;
}
void Scumm_v5::o5_loadRoomWithEgo() {
Actor *a;
int obj, room, x, y;
int x2, y2, dir, oldDir;
obj = getVarOrDirectWord(0x80);
room = getVarOrDirectByte(0x40);
@ -1472,6 +1466,7 @@ void Scumm_v5::o5_loadRoomWithEgo() {
a = derefActor(VAR(VAR_EGO), "o5_loadRoomWithEgo");
a->putActor(0, 0, room);
oldDir = a->getFacing();
_egoPositioned = false;
x = (int16)fetchScriptWord();
@ -1481,6 +1476,18 @@ void Scumm_v5::o5_loadRoomWithEgo() {
startScene(a->room, a, obj);
VAR(VAR_WALKTO_OBJ) = 0;
if (_version <= 3) {
// FIXME: Maybe this should also cover V4 games. See also startScene().
// More investigation (ASM) needed.
if (!_egoPositioned) {
getObjectXYPos(obj, x2, y2, dir);
a->putActor(x2, y2, _currentRoom);
if (a->getFacing() == oldDir)
a->setDirection(dir); // TODO: Original seems to "flip" dir here, need to investigate?
}
a->moving = 0;
}
// FIXME: Can this be removed?
camera._cur.x = a->x;