hum, why was this not commited by CVS?
svn-id: r10175
This commit is contained in:
parent
41a8905519
commit
6c4d6889f5
2 changed files with 19 additions and 8 deletions
|
@ -1272,7 +1272,7 @@ void Scumm_v2::o2_lights() {
|
||||||
|
|
||||||
void Scumm_v2::o2_loadRoomWithEgo() {
|
void Scumm_v2::o2_loadRoomWithEgo() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int obj, room, x, y;
|
int obj, room, x, y, x2, y2, dir;
|
||||||
|
|
||||||
obj = getVarOrDirectWord(0x80);
|
obj = getVarOrDirectWord(0x80);
|
||||||
room = getVarOrDirectByte(0x40);
|
room = getVarOrDirectByte(0x40);
|
||||||
|
@ -1287,6 +1287,10 @@ void Scumm_v2::o2_loadRoomWithEgo() {
|
||||||
|
|
||||||
startScene(a->room, a, obj);
|
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;
|
camera._dest.x = camera._cur.x = a->x;
|
||||||
setCameraAt(a->x, a->y);
|
setCameraAt(a->x, a->y);
|
||||||
setCameraFollows(a);
|
setCameraFollows(a);
|
||||||
|
|
|
@ -1452,19 +1452,13 @@ void Scumm_v5::o5_loadRoom() {
|
||||||
if (!(_features & GF_SMALL_HEADER) || room != _currentRoom)
|
if (!(_features & GF_SMALL_HEADER) || room != _currentRoom)
|
||||||
startScene(room, 0, 0);
|
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;
|
_fullRedraw = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm_v5::o5_loadRoomWithEgo() {
|
void Scumm_v5::o5_loadRoomWithEgo() {
|
||||||
Actor *a;
|
Actor *a;
|
||||||
int obj, room, x, y;
|
int obj, room, x, y;
|
||||||
|
int x2, y2, dir, oldDir;
|
||||||
|
|
||||||
obj = getVarOrDirectWord(0x80);
|
obj = getVarOrDirectWord(0x80);
|
||||||
room = getVarOrDirectByte(0x40);
|
room = getVarOrDirectByte(0x40);
|
||||||
|
@ -1472,6 +1466,7 @@ void Scumm_v5::o5_loadRoomWithEgo() {
|
||||||
a = derefActor(VAR(VAR_EGO), "o5_loadRoomWithEgo");
|
a = derefActor(VAR(VAR_EGO), "o5_loadRoomWithEgo");
|
||||||
|
|
||||||
a->putActor(0, 0, room);
|
a->putActor(0, 0, room);
|
||||||
|
oldDir = a->getFacing();
|
||||||
_egoPositioned = false;
|
_egoPositioned = false;
|
||||||
|
|
||||||
x = (int16)fetchScriptWord();
|
x = (int16)fetchScriptWord();
|
||||||
|
@ -1481,6 +1476,18 @@ void Scumm_v5::o5_loadRoomWithEgo() {
|
||||||
startScene(a->room, a, obj);
|
startScene(a->room, a, obj);
|
||||||
VAR(VAR_WALKTO_OBJ) = 0;
|
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?
|
// FIXME: Can this be removed?
|
||||||
camera._cur.x = a->x;
|
camera._cur.x = a->x;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue