Remove optional TestTriggers argument

This commit is contained in:
Lwmte 2021-09-15 16:58:53 +03:00
parent bb445660e7
commit f79d6436a3
39 changed files with 72 additions and 70 deletions

View file

@ -59,7 +59,8 @@ ITEM_INFO* LaraItem;
COLL_INFO lara_coll = {};
byte LaraNodeUnderwater[NUM_LARA_MESHES];
function<LaraRoutineFunction> lara_control_routines[NUM_LARA_STATES + 1] = {
function<LaraRoutineFunction> lara_control_routines[NUM_LARA_STATES + 1] =
{
lara_as_walk,
lara_as_run,
lara_as_stop,
@ -217,6 +218,7 @@ function<LaraRoutineFunction> lara_control_routines[NUM_LARA_STATES + 1] = {
lara_as_stepoff_left,
lara_as_stepoff_right
};
function<LaraRoutineFunction> lara_collision_routines[NUM_LARA_STATES + 1] = {
lara_col_walk,
lara_col_run,
@ -932,7 +934,7 @@ void LaraAboveWater(ITEM_INFO* item, COLL_INFO* coll) //hmmmm
// Test for flags & triggers
ProcessSectorFlags(item);
TestTriggers(item, false, NULL);
TestTriggers(item, false);
TestVolumes(item);
}
@ -1043,7 +1045,7 @@ void LaraUnderWater(ITEM_INFO* item, COLL_INFO* coll)
LaraGun();
ProcessSectorFlags(item);
TestTriggers(item, false, NULL);
TestTriggers(item, false);
TestVolumes(item);
}
@ -1101,7 +1103,7 @@ void LaraSurface(ITEM_INFO* item, COLL_INFO* coll)
LaraGun();
ProcessSectorFlags(item);
TestTriggers(item, false, NULL);
TestTriggers(item, false);
TestVolumes(item);
}

View file

@ -1308,7 +1308,7 @@ void GetAITarget(CREATURE_INFO* creature)
abs(enemy->pos.zPos - item->pos.zPos) < REACHED_GOAL_RADIUS
|| Objects[item->objectNumber].waterCreature)
{
TestTriggers(enemy, true, NULL);
TestTriggers(enemy, true);
creature->patrol2 = !creature->patrol2;
}
}
@ -1331,7 +1331,7 @@ void GetAITarget(CREATURE_INFO* creature)
abs(enemy->pos.yPos - item->pos.yPos) < REACHED_GOAL_RADIUS &&
abs(enemy->pos.zPos - item->pos.zPos) < REACHED_GOAL_RADIUS)
{
TestTriggers(enemy, true, NULL);
TestTriggers(enemy, true);
creature->reachedGoal = true;
creature->enemy = LaraItem;

View file

@ -479,7 +479,7 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
TestTriggers(SmashedMesh[SmashedMeshCount]->pos.xPos,
SmashedMesh[SmashedMeshCount]->pos.yPos,
SmashedMesh[SmashedMeshCount]->pos.zPos,
SmashedMeshRoom[SmashedMeshCount], true, 0);
SmashedMeshRoom[SmashedMeshCount], true);
floor->Stopper = false;
SmashedMesh[SmashedMeshCount] = 0;

View file

@ -63,9 +63,9 @@ int SwitchTrigger(short itemNum, short timer);
int TriggerActive(ITEM_INFO* item);
short* GetTriggerIndex(FLOOR_INFO* floor, int x, int y, int z);
short* GetTriggerIndex(ITEM_INFO* item);
void TestTriggers(short* data, bool heavy, int heavyFlags);
void TestTriggers(int x, int y, int z, short roomNumber, bool heavy, int heavyFlags);
void TestTriggers(ITEM_INFO* item, bool heavy, int heavyFlags);
void TestTriggers(short* data, bool heavy, int heavyFlags = 0);
void TestTriggers(int x, int y, int z, short roomNumber, bool heavy, int heavyFlags = 0);
void TestTriggers(ITEM_INFO* item, bool heavy, int heavyFlags = 0);
void ProcessSectorFlags(FLOOR_INFO* floor);
void ProcessSectorFlags(int x, int y, int z, short roomNumber);
void ProcessSectorFlags(ITEM_INFO* item);

View file

@ -817,7 +817,7 @@ bool SaveGame::readGameStatusChunks(ChunkId* chunkId, int maxSize, int arg)
TestTriggers(g_Level.Rooms[roomIndex].mesh[staticIndex].pos.xPos,
g_Level.Rooms[roomIndex].mesh[staticIndex].pos.yPos,
g_Level.Rooms[roomIndex].mesh[staticIndex].pos.zPos, roomIndex, true, NULL);
g_Level.Rooms[roomIndex].mesh[staticIndex].pos.zPos, roomIndex, true);
floor->Stopper = false;
}

View file

@ -561,13 +561,13 @@ void CalculateSpotCameras()
Camera.type = HEAVY_CAMERA;
if (CurrentLevel != 0)
{
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true, NULL);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true);
TestVolumes(&Camera);
}
else
{
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, false, NULL);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true, NULL);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, false);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true);
TestVolumes(&Camera);
}
Camera.type = oldType;
@ -757,13 +757,13 @@ void CalculateSpotCameras()
Camera.type = HEAVY_CAMERA;
if (CurrentLevel)
{
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true, NULL);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true);
TestVolumes(&Camera);
}
else
{
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, false, NULL);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true, NULL);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, false);
TestTriggers(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.pos.roomNumber, true);
TestVolumes(&Camera);
}
Camera.type = oldType;

View file

@ -26,7 +26,7 @@ void ProcessExplodingSwitchType8(ITEM_INFO* item)
pos.y = 0;
pos.z = 0;
GetJointAbsPosition(item, &pos, 0);
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true, NULL);
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true);
ExplodeItemNode(item, Objects[item->objectNumber].nmeshes - 1, 0, 64);
item->meshBits |= 1 << ((Objects[item->objectNumber].nmeshes & 0xFF) - 2);
}

View file

@ -37,7 +37,7 @@ namespace TEN::Entities::Doors
else
item->goalAnimState = 0;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
}
CurrentSequence = 4;

View file

@ -122,11 +122,11 @@ void DoppelgangerControl(short itemNum)
floor = GetFloor(x, y, z, &room_num);
h = GetFloorHeight(floor, x, y, z);
item->floor = h;
TestTriggers(x, y, z, item->roomNumber, true, NULL);
TestTriggers(x, y, z, item->roomNumber, true);
if (item->pos.yPos >= h)
{
item->floor = item->pos.yPos = h;
TestTriggers(x, h, z, item->roomNumber, true, NULL);
TestTriggers(x, h, z, item->roomNumber, true);
item->gravityStatus = false;
item->fallspeed = 0;

View file

@ -211,7 +211,7 @@ void AbortionControl(short itemNum)
SoundEffect(171, &item->pos, NULL);
ExplodingDeath(itemNum, 0xffffffff, ABORT_PART_DAMAGE);
TestTriggers(item, true, NULL);
TestTriggers(item, true);
KillItem(itemNum);
item->status = ITEM_DEACTIVATED;

View file

@ -904,8 +904,8 @@ void SpeedBoatControl(short itemNumber)
if (Lara.Vehicle == itemNumber)
{
TestTriggers(boat, true, NULL);
TestTriggers(boat, false, NULL);
TestTriggers(boat, true);
TestTriggers(boat, false);
}
binfo->water = water = GetWaterHeight(boat->pos.xPos, boat->pos.yPos, boat->pos.zPos, roomNumber);

View file

@ -936,8 +936,8 @@ bool SkidooControl()
FLOOR_INFO* floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &roomNumber);
int height = GetFloorHeight(floor, skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos);
TestTriggers(skidoo, true, NULL);
TestTriggers(skidoo, false, NULL);
TestTriggers(skidoo, true);
TestTriggers(skidoo, false);
bool dead = false;
int drive = 0;

View file

@ -1263,7 +1263,7 @@ int KayakControl()
FLOOR_INFO* floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &roomNumber);
int h = GetFloorHeight(floor, v->pos.xPos, v->pos.yPos, v->pos.zPos);
TestTriggers(v, false, NULL);
TestTriggers(v, false);
int water;
if ((kayak->Water = water = GetWaterHeight(v->pos.xPos, v->pos.yPos, v->pos.zPos, roomNumber)) == NO_HEIGHT)

View file

@ -214,7 +214,7 @@ static void CartToBaddieCollision(ITEM_INFO* v)
if ((frame >= 12) && (frame <= 22))
{
SoundEffect(220, &item->pos, 2);
TestTriggers(item, true, NULL);
TestTriggers(item, true);
item->frameNumber++;
}
}
@ -859,7 +859,7 @@ int MineCartControl(void)
ItemNewRoom(Lara.itemNumber, roomNumber);
}
TestTriggers(v, false, NULL);
TestTriggers(v, false);
if (!(cart->Flags & CF_DEAD))
{

View file

@ -1285,7 +1285,7 @@ int QuadBikeControl(void)
int hfl = TestQuadHeight(item, QUAD_FRONT, -QUAD_SIDE, &fl);
int hfr = TestQuadHeight(item, QUAD_FRONT, QUAD_SIDE, &fr);
TestTriggers(item, false, NULL);
TestTriggers(item, false);
if (LaraItem->hitPoints <= 0)
{

View file

@ -889,8 +889,8 @@ void RubberBoatControl(short itemNum)
if (Lara.Vehicle == itemNum)
{
TestTriggers(boat, false, NULL);
TestTriggers(boat, true, NULL);
TestTriggers(boat, false);
TestTriggers(boat, true);
}
binfo->water = water = GetWaterHeight(boat->pos.xPos, boat->pos.yPos, boat->pos.zPos, roomNumber);

View file

@ -1004,7 +1004,7 @@ int SubControl(void)
}
}
TestTriggers(v, false, NULL);
TestTriggers(v, false);
SubEffects(Lara.Vehicle);
if ((Lara.Vehicle != NO_ITEM) && (!(sub->Flags & UPV_DEAD)))

View file

@ -54,7 +54,7 @@ namespace TEN::Entities::TR4
static void AhmetHeavyTriggers(ITEM_INFO* item)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
}
static void TriggerAhmetDeathEffect(ITEM_INFO* item)

View file

@ -290,7 +290,7 @@ void BaboonControl(short itemNumber)
item->currentAnimState = BABOON_ACTIVATE_SWITCH;
item->aiBits &= ~(FOLLOW);
TestTriggers(item, true, NULL);
TestTriggers(item, true);
baboon->enemy = nullptr;
}
@ -533,7 +533,7 @@ void BaboonControl(short itemNumber)
floor = GetFloor(pos.x, pos.y, pos.z, &pos.roomNumber);
int height = GetFloorHeight(floor, pos.x, pos.y, pos.z);
item->floor = height;
TestTriggers(pos.x, pos.y, pos.z, pos.roomNumber, TRUE, NULL);
TestTriggers(pos.x, pos.y, pos.z, pos.roomNumber, TRUE);
item->triggerFlags = 1;
}
break;

View file

@ -267,7 +267,7 @@ void EnemyJeepControl(short itemNumber)
if (creature->reachedGoal)
{
TestTriggers(target->pos.xPos,target->pos.yPos,target->pos.zPos,target->roomNumber, true, 0x0);
TestTriggers(target->pos.xPos,target->pos.yPos,target->pos.zPos,target->roomNumber, true);
if (Lara.location < item->itemFlags[3] && item->currentAnimState != 2 && item->goalAnimState != 2)
{

View file

@ -630,7 +630,7 @@ void GuideControl(short itemNumber)
if (item->animNumber != obj->animIndex + 57
&& item->frameNumber == g_Level.Anims[item->animNumber].frameEnd - 20)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
creature->reachedGoal = false;
creature->enemy = NULL;
@ -705,7 +705,7 @@ void GuideControl(short itemNumber)
if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase + 42)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
item->pos.yRot = enemy->pos.yRot;
creature->reachedGoal = false;
@ -740,7 +740,7 @@ void GuideControl(short itemNumber)
{
item->goalAnimState = STATE_GUIDE_STOP;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
creature->reachedGoal = false;
creature->enemy = NULL;
@ -802,7 +802,7 @@ void GuideControl(short itemNumber)
}
if (enemy->flags == 42)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
creature->reachedGoal = false;
creature->enemy = NULL;

View file

@ -184,7 +184,7 @@ void KnightTemplarControl(short itemNumber)
mesh->flags &= ~StaticMeshFlags::SM_VISIBLE;
currentFloor->Stopper = false;
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true, NULL);
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true);
}
mesh++;

View file

@ -704,7 +704,7 @@ namespace TEN::Entities::TR4
int y = l->pos.yPos;
int z = l->pos.zPos - 512 * phd_cos(l->pos.yRot);
TestTriggers(x, y, z, l->roomNumber, true, NULL);
TestTriggers(x, y, z, l->roomNumber, true);
RemoveActiveItem(itemNumber);
item->status = ITEM_NOT_ACTIVE;

View file

@ -651,7 +651,7 @@ namespace TEN::Entities::TR4
SoundEffect(SFX_TR4_HIT_ROCK, &item->pos, 0);
staticMesh->flags &= ~StaticMeshFlags::SM_VISIBLE;
floor->Stopper = 0;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
break;
}
}

View file

@ -72,7 +72,7 @@ void SphinxControl(short itemNumber)
mesh->flags &= ~StaticMeshFlags::SM_VISIBLE;
floor->Stopper = false;
TestTriggers(x, y, z, item->roomNumber, true, NULL);
TestTriggers(x, y, z, item->roomNumber, true);
}
}
}
@ -205,7 +205,7 @@ void SphinxControl(short itemNumber)
case SPHINX_HIT:
if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
if (item->touchBits & 0x40)
{

View file

@ -649,7 +649,7 @@ void VonCroyControl(short itemNumber)
creature->aiTarget.pos.yPos,
creature->aiTarget.pos.zPos,
creature->aiTarget.roomNumber,
true, NULL);
true);
creature->reachedGoal = false;
creature->enemy = NULL;
@ -772,7 +772,7 @@ void VonCroyControl(short itemNumber)
creature->aiTarget.pos.yPos,
creature->aiTarget.pos.zPos,
creature->aiTarget.roomNumber,
true, NULL);
true);
creature->reachedGoal = false;
creature->enemy = NULL;

View file

@ -79,7 +79,7 @@ void ClockworkBeetleControl(short item_number)
flag = 1;
}
TestTriggers(beetle, false, NULL);
TestTriggers(beetle, false);
if (roomNum != beetle->roomNumber)
ItemNewRoom(item_number, roomNum);

View file

@ -1644,8 +1644,8 @@ int JeepControl(void)
floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber);
height = GetFloorHeight(floor, item->pos.xPos, item->pos.yPos, item->pos.zPos);
TestTriggers(item, true, NULL);
TestTriggers(item, false, NULL);
TestTriggers(item, true);
TestTriggers(item, false);
if (LaraItem->hitPoints <= 0)
{

View file

@ -1421,8 +1421,8 @@ int MotorbikeControl(void)
floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &room_number);
int height = GetFloorHeight(floor, item->pos.xPos, item->pos.yPos, item->pos.zPos);
TestTriggers(item, true, NULL);
TestTriggers(item, false, NULL);
TestTriggers(item, true);
TestTriggers(item, false);
if (LaraItem->hitPoints <= 0)
{

View file

@ -578,7 +578,7 @@ void HitmanControl(short itemNumber)
TestTriggers(
creature->enemy->pos.xPos,
creature->enemy->pos.yPos,
creature->enemy->pos.zPos, roomNumber, true, NULL);
creature->enemy->pos.zPos, roomNumber, true);
item->requiredAnimState = STATE_HITMAN_WALK;

View file

@ -331,7 +331,7 @@ void ControlGladiator(short itemNumber)
//SoundEffect(ShatterSounds[gfCurrentLevel - 5][*(v28 + 18)], v28, 0);
mesh->flags &= ~StaticMeshFlags::SM_VISIBLE;
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true, NULL);
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true);
}
}
}

View file

@ -613,7 +613,7 @@ void GuardControl(short itemNum)
else
{
item->triggerFlags = 0;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
SoundEffect(SFX_TR4_LARA_POLE_LOOP, &item->pos, 0);
}
if (abs(info.angle) >= 364)
@ -637,7 +637,7 @@ void GuardControl(short itemNum)
case 18:
if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
break;
}
if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase + 44)
@ -697,7 +697,7 @@ void GuardControl(short itemNum)
case STATE_GUARD_INSERT_CODE:
if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase + 39)
{
TestTriggers(item, true, NULL);
TestTriggers(item, true);
}
break;
case STATE_GUARD_START_USE_COMPUTER:
@ -741,7 +741,7 @@ void GuardControl(short itemNum)
else if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase + g_Level.Anims[item->animNumber].frameEnd)
{
currentItem->meshBits = 0x1FFF;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
item->requiredAnimState = STATE_GUARD_WALK;
item->swapMeshFlags = 0;
}
@ -778,7 +778,7 @@ void GuardControl(short itemNum)
}
if (item->frameNumber == g_Level.Anims[item->animNumber].frameBase + 39)
{
TestTriggers(item->pos.xPos, item->pos.yPos, item->pos.zPos, enemy->roomNumber, true, NULL);
TestTriggers(item->pos.xPos, item->pos.yPos, item->pos.zPos, enemy->roomNumber, true);
}
break;
default:
@ -811,7 +811,7 @@ void GuardControl(short itemNum)
}
else
{
TestTriggers(creature->enemy->pos.xPos, creature->enemy->pos.yPos, creature->enemy->pos.zPos, enemy->roomNumber, true, NULL);
TestTriggers(creature->enemy->pos.xPos, creature->enemy->pos.yPos, creature->enemy->pos.zPos, enemy->roomNumber, true);
item->requiredAnimState = STATE_GUARD_WALK;
if (creature->enemy->flags & 2)

View file

@ -109,7 +109,7 @@ void ControlGunShip(short itemNumber)
{
ShatterObject(0, hitMesh, 64, end.roomNumber, 0);
hitMesh->flags &= ~StaticMeshFlags::SM_VISIBLE;
TestTriggers(hitMesh->pos.xPos, hitMesh->pos.yPos, hitMesh->pos.zPos, end.roomNumber, true, NULL);
TestTriggers(hitMesh->pos.xPos, hitMesh->pos.yPos, hitMesh->pos.zPos, end.roomNumber, true);
SoundEffect(GetShatterSound(hitMesh->staticNumber), &hitMesh->pos, 0);
}

View file

@ -375,7 +375,7 @@ void LarsonControl(short itemNumber)
int y = r->minfloor + floorHeight;
int z = r->z + (item->TOSSPAD & 0xFF) * SECTOR(1) + 512;
TestTriggers(x, y, z, roomNumber, true, NULL);
TestTriggers(x, y, z, roomNumber, true);
joint0 = 0;
}

View file

@ -263,7 +263,7 @@ void LaserHeadControl(short itemNumber)
TriggerShockwave(&item->pos, 32, 160, 64, 64, 128, 0, 36, 0x6000, 0);
g_Level.Items[creature->puzzleItem].pos.yPos = item->pos.yPos;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
SoundEffect(SFX_TR5_GOD_HEAD_BLAST, &item->pos, 0x800004);
SoundEffect(SFX_TR4_EXPLOSION2, &item->pos, 20971524);

View file

@ -619,7 +619,7 @@ void RomanStatueControl(short itemNumber)
mesh->flags &= ~StaticMeshFlags::SM_VISIBLE;
floor->Stopper = false;
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true, NULL);
TestTriggers(pos.x, pos.y, pos.z, item->roomNumber, true);
}
}
}
@ -910,7 +910,7 @@ void RomanStatueControl(short itemNumber)
int y = r->minfloor + floorHeight;
int z = r->z + (item->TOSSPAD & 0xFF) * SECTOR(1) + 512;
TestTriggers(x, y, z, roomNumber, true, NULL);
TestTriggers(x, y, z, roomNumber, true);
}
}
else

View file

@ -82,7 +82,7 @@ void ControlHighObject1(short itemNumber)
targetItem->flags = (item->flags & 0xC1FF) | 0x20;
item->itemFlags[0] = 6;
item->itemFlags[1] = 768;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
}
return;

View file

@ -293,7 +293,7 @@ void RollingBallControl(short itemNumber)
item->pos.xRot -= (abs(item->itemFlags[0]) + abs(item->itemFlags[1])) / 2;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
}
void ClassicRollingBallCollision(short itemNum, ITEM_INFO* lara, COLL_INFO* coll)
@ -399,7 +399,7 @@ void ClassicRollingBallControl(short itemNum)
item->floor = GetFloorHeight(floor, item->pos.xPos, item->pos.yPos, item->pos.zPos);
TestTriggers(item->pos.xPos, item->pos.yPos, item->pos.zPos, roomNum, true, NULL);
TestTriggers(item->pos.xPos, item->pos.yPos, item->pos.zPos, roomNum, true);
if (item->pos.yPos >= (int)floor - 256)
{

View file

@ -149,7 +149,7 @@ void VentilatorControl(short itemNumber)
else
{
xChange = 1;
TestTriggers(item, true, NULL);
TestTriggers(item, true);
if (item->currentAnimState == 1)
{
//result = 5 * item->animNumber;