Browse Source

Object by reference for BreakCrux

Some common code that searches for the crux object in the active objects list, can extract that into a dedicated function.
pull/2341/head
ephphatha 5 years ago committed by Anders Jenbo
parent
commit
a1d4bdc98d
  1. 37
      Source/objects.cpp

37
Source/objects.cpp

@ -5009,29 +5009,29 @@ void SyncOpObject(int pnum, int cmd, int i)
}
}
void BreakCrux(int i)
{
Objects[i]._oAnimFlag = 1;
Objects[i]._oAnimFrame = 1;
Objects[i]._oAnimDelay = 1;
Objects[i]._oSolidFlag = true;
Objects[i]._oMissFlag = true;
Objects[i]._oBreak = -1;
Objects[i]._oSelFlag = 0;
void BreakCrux(ObjectStruct &crux)
{
crux._oAnimFlag = 1;
crux._oAnimFrame = 1;
crux._oAnimDelay = 1;
crux._oSolidFlag = true;
crux._oMissFlag = true;
crux._oBreak = -1;
crux._oSelFlag = 0;
bool triggered = true;
for (int j = 0; j < ActiveObjectCount; j++) {
int oi = ActiveObjects[j];
if (Objects[oi]._otype != OBJ_CRUX1 && Objects[oi]._otype != OBJ_CRUX2 && Objects[oi]._otype != OBJ_CRUX3)
const auto &testObject = Objects[ActiveObjects[j]];
if (IsNoneOf(testObject._otype, OBJ_CRUX1, OBJ_CRUX2, OBJ_CRUX3))
continue;
if (Objects[i]._oVar8 != Objects[oi]._oVar8 || Objects[oi]._oBreak == -1)
if (crux._oVar8 != testObject._oVar8 || testObject._oBreak == -1)
continue;
triggered = false;
}
if (!triggered)
return;
if (!deltaload)
PlaySfxLoc(IS_LEVER, Objects[i].position);
ObjChangeMap(Objects[i]._oVar1, Objects[i]._oVar2, Objects[i]._oVar3, Objects[i]._oVar4);
PlaySfxLoc(IS_LEVER, crux.position);
ObjChangeMap(crux._oVar1, crux._oVar2, crux._oVar3, crux._oVar4);
}
void BreakBarrel(int pnum, int i, int dam, bool forcebreak, bool sendmsg)
@ -5125,7 +5125,7 @@ void BreakObject(int pnum, int oi)
case OBJ_CRUX1:
case OBJ_CRUX2:
case OBJ_CRUX3:
BreakCrux(oi);
BreakCrux(Objects[oi]);
break;
case OBJ_BARREL:
case OBJ_BARRELEX:
@ -5146,11 +5146,10 @@ void SyncCrux(const ObjectStruct &crux)
{
bool found = true;
for (int j = 0; j < ActiveObjectCount; j++) {
int oi = ActiveObjects[j];
int type = Objects[oi]._otype;
if (IsNoneOf(type, OBJ_CRUX1, OBJ_CRUX2, OBJ_CRUX3))
const auto &testObject = Objects[ActiveObjects[j]];
if (IsNoneOf(testObject._otype, OBJ_CRUX1, OBJ_CRUX2, OBJ_CRUX3))
continue;
if (crux._oVar8 != Objects[oi]._oVar8 || Objects[oi]._oBreak == -1)
if (crux._oVar8 != testObject._oVar8 || testObject._oBreak == -1)
continue;
found = false;
}

Loading…
Cancel
Save