Browse Source

Clean up OperateObject. (#1003)

Also correct argument type for some functions it calls. They did not lost
their binary exactness.
pull/287/head^2
Sergey Semushin 7 years ago committed by Anders Jenbo
parent
commit
d6c8e6e44c
  1. 153
      Source/objects.cpp
  2. 8
      Source/objects.h

153
Source/objects.cpp

@ -2963,7 +2963,7 @@ void OperateSChambBk(int pnum, int i)
}
}
void OperateChest(int pnum, int i, unsigned char sendmsg)
void OperateChest(int pnum, int i, BOOL sendmsg)
{
int j, mdir, mtype;
@ -3069,7 +3069,7 @@ void OperateInnSignChest(int pnum, int i)
}
// 676190: using guessed type int deltaload;
void OperateSlainHero(int pnum, int i, unsigned char sendmsg)
void OperateSlainHero(int pnum, int i, BOOL sendmsg)
{
if (object[i]._oSelFlag) {
object[i]._oSelFlag = 0;
@ -3123,7 +3123,7 @@ void OperateTrapLvr(int i)
}
}
void OperateSarc(int pnum, int i, unsigned char sendmsg)
void OperateSarc(int pnum, int i, BOOL sendmsg)
{
if (object[i]._oSelFlag) {
if (!deltaload)
@ -3828,7 +3828,7 @@ void OperateBookCase(int pnum, int i, BOOL sendmsg)
}
// 676190: using guessed type int deltaload;
void OperateDecap(int pnum, int i, unsigned char sendmsg)
void OperateDecap(int pnum, int i, BOOL sendmsg)
{
if (object[i]._oSelFlag) {
object[i]._oSelFlag = 0;
@ -4105,32 +4105,55 @@ void OperateLazStand(int pnum, int i)
void OperateObject(int pnum, int i, BOOL TeleFlag)
{
int v3; // esi
int v4; // edi
ObjectStruct *v5; // ebx
int v6; // ecx
BOOLEAN sendmsg; // [esp+Ch] [ebp-4h]
BOOL sendmsg;
v3 = pnum;
v4 = i;
sendmsg = pnum == myplr;
v5 = &object[i];
v6 = v5->_otype;
switch (v5->_otype) {
sendmsg = (pnum == myplr);
switch (object[i]._otype) {
case OBJ_L1LDOOR:
case OBJ_L1RDOOR:
if (TeleFlag) {
if (v6 == OBJ_L1LDOOR)
OperateL1LDoor(v3, i, OBJ_L1LDOOR);
if (v5->_otype == OBJ_L1RDOOR)
OperateL1RDoor(v3, v4, 1u);
} else if (v3 == myplr) {
OperateL1Door(v3, i, 1u);
if (object[i]._otype == OBJ_L1LDOOR)
OperateL1LDoor(pnum, i, 1);
if (object[i]._otype == OBJ_L1RDOOR)
OperateL1RDoor(pnum, i, 1);
break;
}
if (pnum == myplr)
OperateL1Door(pnum, i, 1);
break;
case OBJ_L2LDOOR:
case OBJ_L2RDOOR:
if (TeleFlag) {
if (object[i]._otype == OBJ_L2LDOOR)
OperateL2LDoor(pnum, i, 1);
if (object[i]._otype == OBJ_L2RDOOR)
OperateL2RDoor(pnum, i, 1);
break;
}
if (pnum == myplr)
OperateL2Door(pnum, i, 1);
break;
case OBJ_L3LDOOR:
case OBJ_L3RDOOR:
if (TeleFlag) {
if (object[i]._otype == OBJ_L3LDOOR)
OperateL3LDoor(pnum, i, 1);
if (object[i]._otype == OBJ_L3RDOOR)
OperateL3RDoor(pnum, i, 1);
break;
}
if (pnum == myplr)
OperateL3Door(pnum, i, 1);
break;
case OBJ_LEVER:
case OBJ_SWITCHSKL:
OperateLever(v3, i);
OperateLever(pnum, i);
break;
case OBJ_BOOK2L:
OperateBook(pnum, i);
break;
case OBJ_BOOK2R:
OperateSChambBk(pnum, i);
break;
case OBJ_CHEST1:
case OBJ_CHEST2:
@ -4138,99 +4161,71 @@ void OperateObject(int pnum, int i, BOOL TeleFlag)
case OBJ_TCHEST1:
case OBJ_TCHEST2:
case OBJ_TCHEST3:
OperateChest(v3, i, sendmsg);
break;
case OBJ_BOOK2L:
OperateBook(v3, i);
break;
case OBJ_BOOK2R:
OperateSChambBk(v3, i);
break;
case OBJ_L2LDOOR:
case OBJ_L2RDOOR:
if (TeleFlag) {
if (v6 == OBJ_L2LDOOR)
OperateL2LDoor(v3, i, 1u);
if (v5->_otype == OBJ_L2RDOOR)
OperateL2RDoor(v3, v4, 1u);
} else if (v3 == myplr) {
OperateL2Door(v3, i, 1u);
}
OperateChest(pnum, i, sendmsg);
break;
case OBJ_SARC:
OperateSarc(v3, i, sendmsg);
OperateSarc(pnum, i, sendmsg);
break;
case OBJ_FLAMELVR:
OperateTrapLvr(i);
break;
case OBJ_BLINDBOOK:
case OBJ_BLOODBOOK:
case OBJ_STEELTOME:
OperateBookLever(pnum, i);
break;
case OBJ_SHRINEL:
case OBJ_SHRINER:
OperateShrine(v3, i, IS_MAGIC);
OperateShrine(pnum, i, IS_MAGIC);
break;
case OBJ_SKELBOOK:
case OBJ_BOOKSTAND:
OperateSkelBook(v3, i, sendmsg);
OperateSkelBook(pnum, i, sendmsg);
break;
case OBJ_BOOKCASEL:
case OBJ_BOOKCASER:
OperateBookCase(v3, i, sendmsg);
break;
case OBJ_BLOODFTN:
case OBJ_PURIFYINGFTN:
case OBJ_MURKYFTN:
case OBJ_TEARFTN:
OperateFountains(v3, i);
OperateBookCase(pnum, i, sendmsg);
break;
case OBJ_DECAP:
OperateDecap(v3, i, sendmsg);
break;
case OBJ_BLINDBOOK:
case OBJ_BLOODBOOK:
case OBJ_STEELTOME:
OperateBookLever(v3, i);
break;
case OBJ_PEDISTAL:
OperatePedistal(v3, i);
break;
case OBJ_L3LDOOR:
case OBJ_L3RDOOR:
if (TeleFlag) {
if (v6 == OBJ_L3LDOOR)
OperateL3LDoor(v3, i, 1u);
if (v5->_otype == OBJ_L3RDOOR)
OperateL3RDoor(v3, v4, 1u);
} else if (v3 == myplr) {
OperateL3Door(v3, i, 1u);
}
OperateDecap(pnum, i, sendmsg);
break;
case OBJ_ARMORSTAND:
case OBJ_WARARMOR:
OperateArmorStand(v3, i, sendmsg);
OperateArmorStand(pnum, i, sendmsg);
break;
case OBJ_GOATSHRINE:
OperateGoatShrine(v3, i, LS_GSHRINE);
OperateGoatShrine(pnum, i, LS_GSHRINE);
break;
case OBJ_CAULDRON:
OperateCauldron(v3, i, LS_CALDRON);
OperateCauldron(pnum, i, LS_CALDRON);
break;
case OBJ_BLOODFTN:
case OBJ_PURIFYINGFTN:
case OBJ_MURKYFTN:
case OBJ_TEARFTN:
OperateFountains(pnum, i);
break;
case OBJ_STORYBOOK:
OperateStoryBook(v3, i);
OperateStoryBook(pnum, i);
break;
case OBJ_PEDISTAL:
OperatePedistal(pnum, i);
break;
case OBJ_WARWEAP:
case OBJ_WEAPONRACK:
OperateWeaponRack(v3, i, sendmsg);
OperateWeaponRack(pnum, i, sendmsg);
break;
case OBJ_MUSHPATCH:
OperateMushPatch(v3, i);
OperateMushPatch(pnum, i);
break;
case OBJ_LAZSTAND:
OperateLazStand(v3, i);
OperateLazStand(pnum, i);
break;
case OBJ_SLAINHERO:
OperateSlainHero(v3, i, sendmsg);
OperateSlainHero(pnum, i, sendmsg);
break;
case OBJ_SIGNCHEST:
OperateInnSignChest(v3, i);
OperateInnSignChest(pnum, i);
break;
}
}

8
Source/objects.h

@ -104,12 +104,12 @@ void OperateLever(int pnum, int i);
void OperateBook(int pnum, int i);
void OperateBookLever(int pnum, int i);
void OperateSChambBk(int pnum, int i);
void OperateChest(int pnum, int i, unsigned char sendmsg);
void OperateChest(int pnum, int i, BOOL sendmsg);
void OperateMushPatch(int pnum, int i);
void OperateInnSignChest(int pnum, int i);
void OperateSlainHero(int pnum, int i, unsigned char sendmsg);
void OperateSlainHero(int pnum, int i, BOOL sendmsg);
void OperateTrapLvr(int i);
void OperateSarc(int pnum, int i, unsigned char sendmsg);
void OperateSarc(int pnum, int i, BOOL sendmsg);
void OperateL2Door(int pnum, int i, unsigned char sendflag);
void OperateL3Door(int pnum, int i, unsigned char sendflag);
void OperatePedistal(int pnum, int i);
@ -118,7 +118,7 @@ int ItemMiscIdIdx(int imiscid);
void OperateShrine(int pnum, int i, int sType);
void OperateSkelBook(int pnum, int i, BOOL sendmsg);
void OperateBookCase(int pnum, int i, BOOL sendmsg);
void OperateDecap(int pnum, int i, unsigned char sendmsg);
void OperateDecap(int pnum, int i, BOOL sendmsg);
void OperateArmorStand(int pnum, int i, BOOL sendmsg);
int FindValidShrine(int i);
void OperateGoatShrine(int pnum, int i, int sType);

Loading…
Cancel
Save