[Scummvm-cvs-logs] SF.net SVN: scummvm:[43628] scummvm/trunk/engines/agos/saveload.cpp
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Sat Aug 22 03:53:26 CEST 2009
Revision: 43628
http://scummvm.svn.sourceforge.net/scummvm/?rev=43628&view=rev
Author: Kirben
Date: 2009-08-22 01:53:25 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
Correct errors in load/save code for PC version of Waxworks.
Modified Paths:
--------------
scummvm/trunk/engines/agos/saveload.cpp
Modified: scummvm/trunk/engines/agos/saveload.cpp
===================================================================
--- scummvm/trunk/engines/agos/saveload.cpp 2009-08-22 00:41:22 UTC (rev 43627)
+++ scummvm/trunk/engines/agos/saveload.cpp 2009-08-22 01:53:25 UTC (rev 43628)
@@ -1252,24 +1252,39 @@
if (_roomsListPtr) {
byte *p = _roomsListPtr;
- for (;;) {
- uint16 minNum = READ_BE_UINT16(p); p += 2;
- if (minNum == 0)
- break;
+ if (room == _currentRoom) {
+ for (;;) {
+ uint16 minNum = READ_BE_UINT16(p); p += 2;
+ if (minNum == 0)
+ break;
- uint16 maxNum = READ_BE_UINT16(p); p += 2;
+ uint16 maxNum = READ_BE_UINT16(p); p += 2;
- for (uint16 z = minNum; z <= maxNum; z++) {
- uint16 itemNum = z + 2;
- Item *item = derefItem(itemNum);
- item->parent = 0;
+ 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;
+ 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;
+
+ uint16 maxNum = READ_BE_UINT16(p); p += 2;
+
+ for (uint16 z = minNum; z <= maxNum; z++) {
+ uint16 itemNum = z + 2;
+ Item *item = derefItem(itemNum);
+ item->parent = 0;
+ }
+ }
}
}
@@ -1439,7 +1454,6 @@
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;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list