[Scummvm-cvs-logs] scummvm master -> 4a13462db2401c9f90e2bc1675162aeff147662f
Kirben
kirben at optusnet.com.au
Wed May 20 03:49:47 CEST 2015
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4a13462db2 AGOS: Fix regression when loading saved games in PC version of Waxworks.
Commit: 4a13462db2401c9f90e2bc1675162aeff147662f
https://github.com/scummvm/scummvm/commit/4a13462db2401c9f90e2bc1675162aeff147662f
Author: Kirben (kirben at optusnet.com.au)
Date: 2015-05-20T11:48:31+10:00
Commit Message:
AGOS: Fix regression when loading saved games in PC version of Waxworks.
Changed paths:
engines/agos/saveload.cpp
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp
index 06ab602..5c54e48 100644
--- a/engines/agos/saveload.cpp
+++ b/engines/agos/saveload.cpp
@@ -1201,6 +1201,7 @@ bool AGOSEngine_Elvira2::loadGame(const Common::String &filename, bool restartMo
char ident[100];
Common::SeekableReadStream *f = NULL;
uint num, item_index, i, j;
+ uint16 room = _currentRoom;
_videoLockOut |= 0x100;
@@ -1259,50 +1260,7 @@ bool AGOSEngine_Elvira2::loadGame(const Common::String &filename, bool restartMo
}
f->readUint16BE();
- uint16 room = _currentRoom;
_currentRoom = f->readUint16BE();
-
- if (_roomsListPtr) {
- byte *p = _roomsListPtr;
- if (room == _currentRoom) {
- for (;;) {
- uint16 minNum = READ_BE_UINT16(p); p += 2;
- if (minNum == 0)
- break;
-
- uint16 maxNum = READ_BE_UINT16(p); p += 2;
-
- for (uint16 z = minNum; z <= maxNum; z++) {
- uint16 itemNum = z + 2;
- Item *item = derefItem(itemNum);
-
- num = (itemNum - _itemArrayInited);
- item->state = _roomStates[num].state;
- item->classFlags = _roomStates[num].classFlags;
- SubRoom *subRoom = (SubRoom *)findChildOfType(item, kRoomType);
- subRoom->roomExitStates = _roomStates[num].roomExitStates;
- }
- }
- } else {
- for (;;) {
- uint16 minNum = READ_BE_UINT16(p); p += 2;
- if (minNum == 0)
- break;
-
- uint16 maxNum = READ_BE_UINT16(p); p += 2;
-
- for (uint16 z = minNum; z <= maxNum; z++) {
- uint16 itemNum = z + 2;
- _itemArrayPtr[itemNum] = 0;
- }
- }
- }
- }
-
- if (room != _currentRoom) {
- _roomsListPtr = 0;
- loadRoomItems(_currentRoom);
- }
}
item_index = 1;
@@ -1361,6 +1319,49 @@ bool AGOSEngine_Elvira2::loadGame(const Common::String &filename, bool restartMo
}
}
+ if (getGameType() == GType_WW && getPlatform() == Common::kPlatformDOS) {
+ if (_roomsListPtr) {
+ byte *p = _roomsListPtr;
+ if (room == _currentRoom) {
+ for (;;) {
+ uint16 minNum = READ_BE_UINT16(p); p += 2;
+ if (minNum == 0)
+ break;
+
+ uint16 maxNum = READ_BE_UINT16(p); p += 2;
+
+ for (uint16 z = minNum; z <= maxNum; z++) {
+ uint16 itemNum = z + 2;
+ Item *item = derefItem(itemNum);
+
+ num = (itemNum - _itemArrayInited);
+ item->state = _roomStates[num].state;
+ item->classFlags = _roomStates[num].classFlags;
+ SubRoom *subRoom = (SubRoom *)findChildOfType(item, kRoomType);
+ subRoom->roomExitStates = _roomStates[num].roomExitStates;
+ }
+ }
+ } else {
+ for (;;) {
+ uint16 minNum = READ_BE_UINT16(p); p += 2;
+ if (minNum == 0)
+ break;
+
+ uint16 maxNum = READ_BE_UINT16(p); p += 2;
+
+ for (uint16 z = minNum; z <= maxNum; z++) {
+ uint16 itemNum = z + 2;
+ _itemArrayPtr[itemNum] = 0;
+ }
+ }
+ }
+ }
+
+ if (room != _currentRoom) {
+ _roomsListPtr = 0;
+ loadRoomItems(_currentRoom);
+ }
+ }
// read the variables
for (i = 0; i != _numVars; i++) {
writeVariable(i, f->readUint16BE());
More information about the Scummvm-git-logs
mailing list