[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