[Scummvm-cvs-logs] SF.net SVN: scummvm: [24122] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Thu Oct 5 10:54:57 CEST 2006


Revision: 24122
          http://svn.sourceforge.net/scummvm/?rev=24122&view=rev
Author:   kirben
Date:     2006-10-05 01:54:51 -0700 (Thu, 05 Oct 2006)

Log Message:
-----------
Fix loading position of initial items in Elvira 1/2

Modified Paths:
--------------
    scummvm/trunk/engines/agos/items.cpp
    scummvm/trunk/engines/agos/res.cpp
    scummvm/trunk/engines/agos/rooms.cpp
    scummvm/trunk/engines/agos/subroutine.cpp

Modified: scummvm/trunk/engines/agos/items.cpp
===================================================================
--- scummvm/trunk/engines/agos/items.cpp	2006-10-05 05:27:10 UTC (rev 24121)
+++ scummvm/trunk/engines/agos/items.cpp	2006-10-05 08:54:51 UTC (rev 24122)
@@ -231,6 +231,7 @@
 	op[87] = &AGOSEngine::o_setState;
 
 	op[91] = &AGOSEngine::o_message;
+	op[92] = &AGOSEngine::o_message;
 
 	op[97] = &AGOSEngine::o_end;
 	op[98] = &AGOSEngine::o_done;
@@ -1771,11 +1772,11 @@
 void AGOSEngine::oww_goto() {
 	// 55: set itemA parent
 	uint item = getNextItemID();
-	if (_itemArrayPtr[item] == NULL) {
+	if (derefItem(item) == NULL) {
 		setItemParent(me(), NULL);
 		loadRoomItems(item);
 	}
-	setItemParent(me(), _itemArrayPtr[item]);
+	setItemParent(me(), derefItem(item));
 }
 
 void AGOSEngine::oww_whereTo() {

Modified: scummvm/trunk/engines/agos/res.cpp
===================================================================
--- scummvm/trunk/engines/agos/res.cpp	2006-10-05 05:27:10 UTC (rev 24121)
+++ scummvm/trunk/engines/agos/res.cpp	2006-10-05 08:54:51 UTC (rev 24122)
@@ -111,7 +111,7 @@
 int AGOSEngine::allocGamePcVars(File *in) {
 	uint item_array_size, item_array_inited, stringtable_num;
 	uint32 version;
-	uint i, firstItem;
+	uint i;
 
 	item_array_size = in->readUint32BE();
 	version = in->readUint32BE();
@@ -119,12 +119,11 @@
 	stringtable_num = in->readUint32BE();
 
 	if (getGameType() == GType_ELVIRA || getGameType() == GType_ELVIRA2) {
+		item_array_size += 2;
 		item_array_inited = item_array_size;
-		firstItem = 0;
 	} else {
 		item_array_inited += 2;				// first two items are predefined
 		item_array_size += 2;
-		firstItem = 1;
 	}
 
 	if (version != 0x80)
@@ -137,7 +136,7 @@
 	_itemArraySize = item_array_size;
 	_itemArrayInited = item_array_inited;
 
-	for (i = firstItem; i < item_array_inited; i++) {
+	for (i = 1; i < item_array_inited; i++) {
 		_itemArrayPtr[i] = (Item *)allocateItem(sizeof(Item));
 	}
 
@@ -164,8 +163,7 @@
 	createPlayer();
 	readGamePcText(&in);
 
-	int firstItem = (getGameType() == GType_ELVIRA || getGameType() == GType_ELVIRA2) ? 0 : 2;
-	for (i = firstItem; i < num_inited_objects; i++) {
+	for (i = 2; i < num_inited_objects; i++) {
 		readItemFromGamePc(&in, _itemArrayPtr[i]);
 	}
 

Modified: scummvm/trunk/engines/agos/rooms.cpp
===================================================================
--- scummvm/trunk/engines/agos/rooms.cpp	2006-10-05 05:27:10 UTC (rev 24121)
+++ scummvm/trunk/engines/agos/rooms.cpp	2006-10-05 08:54:51 UTC (rev 24122)
@@ -102,14 +102,11 @@
 		p++;
 
 		for (;;) {
-			min_num = (p[0] * 256) | p[1];
-			p += 2;
-
+			min_num = READ_BE_UINT16(p); p += 2;
 			if (min_num == 0)
 				break;
 
-			max_num = (p[0] * 256) | p[1];
-			p += 2;
+			max_num = READ_BE_UINT16(p); p += 2;
 
 			if (item >= min_num && item <= max_num) {
 
@@ -118,9 +115,8 @@
 					error("loadRoomItems: Can't load rooms file '%s'", filename);
 				}
 
-				for (i = min_num; i <= max_num; i++) {
+				while ((i = in.readUint16BE()) != 0) {
 					_itemArrayPtr[i] = (Item *)allocateItem(sizeof(Item));
-					in.readUint16BE();
 					readItemFromGamePc(&in, _itemArrayPtr[i]);
 				}
 				in.close();

Modified: scummvm/trunk/engines/agos/subroutine.cpp
===================================================================
--- scummvm/trunk/engines/agos/subroutine.cpp	2006-10-05 05:27:10 UTC (rev 24121)
+++ scummvm/trunk/engines/agos/subroutine.cpp	2006-10-05 08:54:51 UTC (rev 24122)
@@ -476,13 +476,7 @@
 void AGOSEngine::runSubroutine101() {
 	Subroutine *sub;
 
-	if (getGameType() == GType_ELVIRA || getGameType() == GType_ELVIRA2) {
-		// HACK
-		sub = getSubroutineByID(1);
-	} else {
-		sub = getSubroutineByID(101);
-	}
-
+	sub = getSubroutineByID(101);
 	if (sub != NULL)
 		startSubroutineEx(sub);
 


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