[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