diff options
author | Norbert Lange | 2009-08-24 17:51:47 +0000 |
---|---|---|
committer | Norbert Lange | 2009-08-24 17:51:47 +0000 |
commit | 917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5 (patch) | |
tree | e652563203a00f8acecfaafbf93c64dbfbd13f25 /engines/agos/saveload.cpp | |
parent | 5f87d5090cfcb34cda3c1f5d430e0865344d7366 (diff) | |
parent | dd7868acc2512c9761d892e67a4837f4dc38bdc0 (diff) | |
download | scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.tar.gz scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.tar.bz2 scummvm-rg350-917d4b78b36d6c5a5c25a03e7ee6a1c1b6a85fd5.zip |
Merge with trunk
svn-id: r43701
Diffstat (limited to 'engines/agos/saveload.cpp')
-rw-r--r-- | engines/agos/saveload.cpp | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp index 8a54151f91..8470203640 100644 --- a/engines/agos/saveload.cpp +++ b/engines/agos/saveload.cpp @@ -1252,23 +1252,38 @@ bool AGOSEngine_Elvira2::loadGame(const char *filename, bool restartMode) { if (_roomsListPtr) { byte *p = _roomsListPtr; - for (;;) { - uint16 minNum = READ_BE_UINT16(p); p += 2; - if (minNum == 0) - break; - - uint16 maxNum = READ_BE_UINT16(p); p += 2; + 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); + _roomStates[num].state = item->state; + _roomStates[num].classFlags = item->classFlags; + SubRoom *subRoom = (SubRoom *)findChildOfType(item, kRoomType); + _roomStates[num].roomExitStates = subRoom->roomExitStates; + } + } + } else { + for (;;) { + uint16 minNum = READ_BE_UINT16(p); p += 2; + if (minNum == 0) + break; - for (uint16 z = minNum; z <= maxNum; z++) { - uint16 itemNum = z + 2; - Item *item = derefItem(itemNum); - item->parent = 0; + uint16 maxNum = READ_BE_UINT16(p); p += 2; - num = (itemNum - _itemArrayInited); - item->state = _roomStates[num].state; - item->classFlags = _roomStates[num].classFlags; - SubRoom *subRoom = (SubRoom *)findChildOfType(item, kRoomType); - subRoom->roomExitStates = _roomStates[num].roomExitStates; + for (uint16 z = minNum; z <= maxNum; z++) { + uint16 itemNum = z + 2; + Item *item = derefItem(itemNum); + item->parent = 0; + } } } } @@ -1439,7 +1454,6 @@ bool AGOSEngine_Elvira2::saveGame(uint slot, const char *caption) { for (uint16 z = minNum; z <= maxNum; z++) { uint16 itemNum = z + 2; Item *item = derefItem(itemNum); - item->parent = 0; uint16 num = (itemNum - _itemArrayInited); _roomStates[num].state = item->state; |