[Scummvm-cvs-logs] SF.net SVN: scummvm:[48227] scummvm/trunk/engines/agos
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Wed Mar 10 21:56:57 CET 2010
Revision: 48227
http://scummvm.svn.sourceforge.net/scummvm/?rev=48227&view=rev
Author: fingolfin
Date: 2010-03-10 20:56:54 +0000 (Wed, 10 Mar 2010)
Log Message:
-----------
AGOS: cleanup
Modified Paths:
--------------
scummvm/trunk/engines/agos/rooms.cpp
scummvm/trunk/engines/agos/script_e2.cpp
Modified: scummvm/trunk/engines/agos/rooms.cpp
===================================================================
--- scummvm/trunk/engines/agos/rooms.cpp 2010-03-10 20:38:39 UTC (rev 48226)
+++ scummvm/trunk/engines/agos/rooms.cpp 2010-03-10 20:56:54 UTC (rev 48227)
@@ -263,62 +263,65 @@
// Elvira 2 specific
int AGOSEngine_Elvira2::changeExitStates(SubSuperRoom *sr, int n, int d, uint16 s) {
int b, bd;
- uint16 mask = 3;
- uint16 bs = s;
+ uint16 mask;
switch (d) {
- case 0:
- b =- (sr->roomX); bd = 2;
- if (((n % (sr->roomX * sr->roomY)) / sr->roomX) == 0)
- return(0);
- else
- break;
- case 1:
- b = 1; bd = 3;
- if (((n % (sr->roomX * sr->roomY)) % sr->roomX) == 0)
- return 0;
- else
- break;
- case 2:
- b = sr->roomX; bd = 0;
- if (((n % (sr->roomX * sr->roomY)) / sr->roomX) == (sr->roomY - 1))
- return 0;
- else
- break;
- case 3:
- b =- 1; bd = 1;
- if (((n % (sr->roomX * sr->roomY)) % sr->roomX) == 1)
- return 0;
- else
- break;
- case 4:
- b =- (sr->roomX * sr->roomY); bd = 5;
- if (n < (sr->roomX * sr->roomY))
- return 0;
- else
- break;
- case 5:
- b = sr->roomX * sr->roomY; bd = 4;
- if (n > (sr->roomX * sr->roomY * (sr->roomZ - 1)))
- return 0;
- else
- break;
- default:
+ case 0:
+ b = -(sr->roomX);
+ bd = 2;
+ if (((n % (sr->roomX * sr->roomY)) / sr->roomX) == 0)
return 0;
+ else
+ break;
+ case 1:
+ b = 1;
+ bd = 3;
+ if (((n % (sr->roomX * sr->roomY)) % sr->roomX) == 0)
+ return 0;
+ else
+ break;
+ case 2:
+ b = sr->roomX;
+ bd = 0;
+ if (((n % (sr->roomX * sr->roomY)) / sr->roomX) == (sr->roomY - 1))
+ return 0;
+ else
+ break;
+ case 3:
+ b = -1;
+ bd = 1;
+ if (((n % (sr->roomX * sr->roomY)) % sr->roomX) == 1)
+ return 0;
+ else
+ break;
+ case 4:
+ b = -(sr->roomX * sr->roomY);
+ bd = 5;
+ if (n < (sr->roomX * sr->roomY))
+ return 0;
+ else
+ break;
+ case 5:
+ b = sr->roomX * sr->roomY;
+ bd = 4;
+ if (n > (sr->roomX * sr->roomY * (sr->roomZ - 1)))
+ return 0;
+ else
+ break;
+ default:
+ return 0;
}
+
n--;
d <<= 1;
- mask <<= d;
- s <<= d;
+ mask = (3 << d);
sr->roomExitStates[n] &= ~mask;
- sr->roomExitStates[n] |= s;
- mask = 3;
- n += b;
+ sr->roomExitStates[n] |= (s << d);
+
bd <<= 1;
- mask <<= bd;
- bs <<= bd;
- sr->roomExitStates[n] &= ~mask;
- sr->roomExitStates[n] |= bs;
+ mask = (3 << bd);
+ sr->roomExitStates[n + b] &= ~mask;
+ sr->roomExitStates[n + b] |= (s << bd);
return 1;
}
Modified: scummvm/trunk/engines/agos/script_e2.cpp
===================================================================
--- scummvm/trunk/engines/agos/script_e2.cpp 2010-03-10 20:38:39 UTC (rev 48226)
+++ scummvm/trunk/engines/agos/script_e2.cpp 2010-03-10 20:56:54 UTC (rev 48227)
@@ -644,17 +644,17 @@
void AGOSEngine_Elvira2::oe2_isAdjNoun() {
// 179: item unk1 unk2 is
Item *item = getNextItemPtr();
- int16 a = getNextWord(), n = getNextWord();
+ int16 a = getNextWord();
+ int16 n = getNextWord();
- if (getGameType() == GType_ELVIRA2) {
+ if (getGameType() == GType_ELVIRA2 && item == NULL) {
// WORKAROUND bug #1745996: A NULL item can occur when
// interacting with items in the dinning room
- if (item == NULL) {
- setScriptCondition(false);
- return;
- }
+ setScriptCondition(false);
+ return;
}
+ assert(item);
setScriptCondition(item->adjective == a && item->noun == n);
}
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