mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-11 11:45:21 +00:00
AGOS: cleanup
svn-id: r48227
This commit is contained in:
parent
80fae481b0
commit
8d1431a5ab
@ -263,62 +263,65 @@ void AGOSEngine::moveDirn(Item *i, uint x) {
|
|||||||
// Elvira 2 specific
|
// Elvira 2 specific
|
||||||
int AGOSEngine_Elvira2::changeExitStates(SubSuperRoom *sr, int n, int d, uint16 s) {
|
int AGOSEngine_Elvira2::changeExitStates(SubSuperRoom *sr, int n, int d, uint16 s) {
|
||||||
int b, bd;
|
int b, bd;
|
||||||
uint16 mask = 3;
|
uint16 mask;
|
||||||
uint16 bs = s;
|
|
||||||
|
|
||||||
switch (d) {
|
switch (d) {
|
||||||
case 0:
|
case 0:
|
||||||
b =- (sr->roomX); bd = 2;
|
b = -(sr->roomX);
|
||||||
if (((n % (sr->roomX * sr->roomY)) / sr->roomX) == 0)
|
bd = 2;
|
||||||
return(0);
|
if (((n % (sr->roomX * sr->roomY)) / sr->roomX) == 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;
|
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--;
|
n--;
|
||||||
d <<= 1;
|
d <<= 1;
|
||||||
mask <<= d;
|
mask = (3 << d);
|
||||||
s <<= d;
|
|
||||||
sr->roomExitStates[n] &= ~mask;
|
sr->roomExitStates[n] &= ~mask;
|
||||||
sr->roomExitStates[n] |= s;
|
sr->roomExitStates[n] |= (s << d);
|
||||||
mask = 3;
|
|
||||||
n += b;
|
|
||||||
bd <<= 1;
|
bd <<= 1;
|
||||||
mask <<= bd;
|
mask = (3 << bd);
|
||||||
bs <<= bd;
|
sr->roomExitStates[n + b] &= ~mask;
|
||||||
sr->roomExitStates[n] &= ~mask;
|
sr->roomExitStates[n + b] |= (s << bd);
|
||||||
sr->roomExitStates[n] |= bs;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -644,17 +644,17 @@ void AGOSEngine_Elvira2::oe2_printMonsterDamage() {
|
|||||||
void AGOSEngine_Elvira2::oe2_isAdjNoun() {
|
void AGOSEngine_Elvira2::oe2_isAdjNoun() {
|
||||||
// 179: item unk1 unk2 is
|
// 179: item unk1 unk2 is
|
||||||
Item *item = getNextItemPtr();
|
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
|
// WORKAROUND bug #1745996: A NULL item can occur when
|
||||||
// interacting with items in the dinning room
|
// interacting with items in the dinning room
|
||||||
if (item == NULL) {
|
setScriptCondition(false);
|
||||||
setScriptCondition(false);
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(item);
|
||||||
setScriptCondition(item->adjective == a && item->noun == n);
|
setScriptCondition(item->adjective == a && item->noun == n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user