Avoid iterating stage table where possible
This commit is contained in:
parent
c3c2617e7b
commit
681fc1111e
|
|
@ -662,7 +662,6 @@ Gfx *bg0f1598b4(Gfx *gdl, Gfx *gdl2, struct gfxvtx *vertices, s16 arg3[3])
|
|||
s32 i;
|
||||
s32 stack;
|
||||
struct xraydata xraydata;
|
||||
struct stagetableentry *stage = stageGetCurrent();
|
||||
s16 sp120[16][3];
|
||||
u32 colours[16];
|
||||
bool inrange[16];
|
||||
|
|
@ -677,7 +676,7 @@ Gfx *bg0f1598b4(Gfx *gdl, Gfx *gdl2, struct gfxvtx *vertices, s16 arg3[3])
|
|||
}
|
||||
|
||||
xraydata.unk014 = 0.250f;
|
||||
xraydata.unk020 = stage->unk2c;
|
||||
xraydata.unk020 = g_CurrentStage->unk2c;
|
||||
xraydata.unk024 = xraydata.unk020 * xraydata.unk020;
|
||||
xraydata.unk000 = arg3[0];
|
||||
xraydata.unk004 = arg3[1];
|
||||
|
|
@ -4996,7 +4995,6 @@ void bgTickPortalsXray(void)
|
|||
s16 xmax;
|
||||
s16 ymin;
|
||||
s16 xmin;
|
||||
struct stagetableentry *stage;
|
||||
s32 i;
|
||||
struct var800a4640 *thing;
|
||||
|
||||
|
|
@ -5029,10 +5027,8 @@ void bgTickPortalsXray(void)
|
|||
player->eraserpos.f[1] = eraserpos.f[1];
|
||||
player->eraserpos.f[2] = eraserpos.f[2];
|
||||
|
||||
stage = stageGetCurrent();
|
||||
|
||||
player->eraserpropdist = stage->eraserpropdist;
|
||||
player->eraserbgdist = (f32) stage->eraserpropdist + stage->unk30;
|
||||
player->eraserpropdist = g_CurrentStage->eraserpropdist;
|
||||
player->eraserbgdist = (f32) g_CurrentStage->eraserpropdist + g_CurrentStage->unk30;
|
||||
|
||||
vismax.f[0] = eraserpos.f[0] + player->eraserbgdist;
|
||||
vismax.f[1] = eraserpos.f[1] + player->eraserbgdist;
|
||||
|
|
|
|||
|
|
@ -553,8 +553,7 @@ bool eyespyTryLaunch(void)
|
|||
bool insafe;
|
||||
char text[48];
|
||||
|
||||
insafe = stageGetIndex(g_Vars.stagenum) == STAGEINDEX_G5BUILDING
|
||||
&& g_Vars.currentplayer->prop->rooms[0] == 0x53;
|
||||
insafe = g_Vars.stagenum == STAGE_G5BUILDING && g_Vars.currentplayer->prop->rooms[0] == 0x53;
|
||||
|
||||
playerpos = g_Vars.currentplayer->prop->pos;
|
||||
|
||||
|
|
@ -566,8 +565,7 @@ bool eyespyTryLaunch(void)
|
|||
g_Vars.currentplayer->eyespy->up.z = 0;
|
||||
g_Vars.currentplayer->eyespy->startuptimer60 = 0;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_G5BUILDING
|
||||
|| stageGetIndex(g_Vars.stagenum) == STAGEINDEX_CITRAINING) {
|
||||
if (g_Vars.stagenum == STAGE_G5BUILDING || g_Vars.stagenum == STAGE_CITRAINING) {
|
||||
g_EyespyMinHeight = 30;
|
||||
} else {
|
||||
g_EyespyMinHeight = 80;
|
||||
|
|
|
|||
|
|
@ -238,12 +238,11 @@ void bgunReset(void)
|
|||
g_Vars.currentplayer->gunzoomfovs[1] = 60;
|
||||
g_Vars.currentplayer->gunzoomfovs[2] = 30;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
g_Weapons[WEAPON_EYESPY]->name = L_GUN_061; // "DrugSpy"
|
||||
g_Weapons[WEAPON_EYESPY]->shortname = L_GUN_061; // "DrugSpy"
|
||||
g_Weapons[WEAPON_EYESPY]->flags &= ~(WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN);
|
||||
} else if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_CHICAGO
|
||||
|| (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR)) {
|
||||
} else if (g_Vars.stagenum == STAGE_CHICAGO || g_Vars.stagenum == STAGE_MBR) {
|
||||
g_Weapons[WEAPON_EYESPY]->name = L_GUN_062; // "BombSpy"
|
||||
g_Weapons[WEAPON_EYESPY]->shortname = L_GUN_062; // "BombSpy"
|
||||
g_Weapons[WEAPON_EYESPY]->flags &= ~(WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN);
|
||||
|
|
|
|||
|
|
@ -2782,18 +2782,12 @@ void chrBeginDeath(struct chrdata *chr, struct coord *dir, f32 relangle, s32 hit
|
|||
// For Investigation and G5 Building, set a stage flag to show that
|
||||
// the eyespy is destroyed. The scripting in those stages checks for
|
||||
// this flag and fails the objective if set.
|
||||
switch (stageGetIndex(g_Vars.stagenum)) {
|
||||
case STAGEINDEX_INVESTIGATION:
|
||||
switch (g_Vars.stagenum) {
|
||||
case STAGE_INVESTIGATION:
|
||||
objectivenum = 0;
|
||||
break;
|
||||
case STAGEINDEX_G5BUILDING:
|
||||
if (lvGetDifficulty() == DIFF_A) {
|
||||
objectivenum = 2;
|
||||
} else if (lvGetDifficulty() == DIFF_SA) {
|
||||
objectivenum = 2;
|
||||
} else {
|
||||
objectivenum = 2;
|
||||
}
|
||||
case STAGE_G5BUILDING:
|
||||
objectivenum = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -5625,7 +5619,7 @@ void chrGoPosChooseAnimation(struct chrdata *chr)
|
|||
|| chr->hitpart == HITPART_RBICEP) {
|
||||
anim = ANIM_01F8;
|
||||
flip = true;
|
||||
} else if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_CHICAGO) {
|
||||
} else if (g_Vars.stagenum == STAGE_CHICAGO) {
|
||||
anim = ANIM_005F;
|
||||
} else if (male) {
|
||||
if (random() % 2) {
|
||||
|
|
@ -6910,7 +6904,7 @@ bool chrConsiderGrenadeThrow(struct chrdata *chr, u32 attackflags, u32 entityid)
|
|||
flags = OBJFLAG_WEAPON_LEFTHANDED;
|
||||
}
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) {
|
||||
if (g_Vars.stagenum == STAGE_MBR) {
|
||||
prop = chrGiveWeapon(chr, MODEL_CHRGRENADE, WEAPON_NBOMB, flags);
|
||||
} else {
|
||||
prop = chrGiveWeapon(chr, MODEL_CHRGRENADE, WEAPON_GRENADE, flags);
|
||||
|
|
|
|||
|
|
@ -821,7 +821,7 @@ bool aiDetectEnemyOnSameFloor(void)
|
|||
distance = chrGetDistanceToChr(g_Vars.chrdata, chr->chrnum);
|
||||
|
||||
if (distance < closestdist) {
|
||||
if (distance < scandist || stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MAIANSOS) {
|
||||
if (distance < scandist || g_Vars.stagenum == STAGE_MAIANSOS) {
|
||||
if (distance < closestdist) {
|
||||
closestdist = distance;
|
||||
newtarget = chr->chrnum;
|
||||
|
|
@ -1551,7 +1551,7 @@ bool aiIfEyespyNearG5Pad(s32 padnum)
|
|||
{
|
||||
s32 i;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_G5BUILDING) {
|
||||
if (g_Vars.stagenum == STAGE_G5BUILDING) {
|
||||
for (i = 0; i < PLAYERCOUNT(); i++) {
|
||||
if (g_Vars.players[i]->eyespy && g_Vars.players[i]->eyespy->prop
|
||||
&& chrGetSquaredDistanceToPad(g_Vars.players[i]->eyespy->prop->chr, padnum) < 22500.0f) {
|
||||
|
|
|
|||
|
|
@ -353,9 +353,7 @@ u8 func0f13d3c4(u8 arg0, u8 arg1)
|
|||
|
||||
Gfx *artifactsConfigureForGlares(Gfx *gdl)
|
||||
{
|
||||
struct stagetableentry *stage = stageGetCurrent();
|
||||
|
||||
texSelect(&gdl, &g_TexLightGlareConfigs[stage->light_type], 4, 0, 2, 1, NULL);
|
||||
texSelect(&gdl, &g_TexLightGlareConfigs[g_CurrentStage->light_type], 4, 0, 2, 1, NULL);
|
||||
|
||||
gDPSetCycleType(gdl++, G_CYC_1CYCLE);
|
||||
gDPSetRenderMode(gdl++, G_RM_CLD_SURF, G_RM_CLD_SURF2);
|
||||
|
|
@ -536,8 +534,8 @@ Gfx *artifactsRenderGlaresForRoom(Gfx *gdl, s32 roomnum)
|
|||
brightness = 750.0f;
|
||||
}
|
||||
|
||||
f24 = stageGetCurrent()->light_width * brightness * 0.01f;
|
||||
f26 = stageGetCurrent()->light_height * brightness * 0.01f;
|
||||
f24 = g_CurrentStage->light_width * brightness * 0.01f;
|
||||
f26 = g_CurrentStage->light_height * brightness * 0.01f;
|
||||
|
||||
f24 *= viGetViewWidth() * (1.0f / 240.0f) / camGetPerspAspect();
|
||||
f26 *= viGetViewHeight() * (1.0f / 240.0f);
|
||||
|
|
@ -549,7 +547,7 @@ Gfx *artifactsRenderGlaresForRoom(Gfx *gdl, s32 roomnum)
|
|||
colour[1] = g;
|
||||
colour[2] = b;
|
||||
|
||||
alpha *= stageGetCurrent()->light_alpha / 255.0f;
|
||||
alpha *= g_CurrentStage->light_alpha / 255.0f;
|
||||
alpha *= (s3[1] / 255.0f);
|
||||
alpha *= (s3[0] / 8.0f);
|
||||
|
||||
|
|
@ -574,7 +572,7 @@ Gfx *artifactsRenderGlaresForRoom(Gfx *gdl, s32 roomnum)
|
|||
colour[0] = 0xff;
|
||||
colour[1] = 0xff;
|
||||
colour[2] = 0xff;
|
||||
colour[3] = stageGetCurrent()->light_alpha;
|
||||
colour[3] = g_CurrentStage->light_alpha;
|
||||
colour[3] = s3[0] * colour[3] / 8;
|
||||
|
||||
gDPSetEnvColor(gdl++, colour[0], colour[1], colour[2], colour[3]);
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
#include "game/smoke.h"
|
||||
#include "game/sparks.h"
|
||||
#include "game/splat.h"
|
||||
#include "game/stagetable.h"
|
||||
#include "game/stars.h"
|
||||
#include "game/stubs/game_013540.h"
|
||||
#include "game/stubs/game_015260.h"
|
||||
|
|
@ -101,6 +102,7 @@
|
|||
struct sndstate *g_MiscSfxAudioHandles[3];
|
||||
u32 var800aa5bc;
|
||||
s32 g_MiscSfxActiveTypes[3];
|
||||
struct stagetableentry *g_CurrentStage;
|
||||
|
||||
u32 var80084010 = 0;
|
||||
bool var80084014 = false;
|
||||
|
|
@ -232,6 +234,8 @@ void lvReset(s32 stagenum)
|
|||
g_Vars.paksconnected = 0;
|
||||
g_Vars.stagenum = stagenum;
|
||||
|
||||
g_CurrentStage = stageGetCurrent();
|
||||
|
||||
cheatsReset();
|
||||
|
||||
g_Vars.lvframenum = 0;
|
||||
|
|
|
|||
|
|
@ -642,9 +642,9 @@ void playerLoadDefaults(void)
|
|||
g_Vars.currentplayer->bondactivateorreload = false;
|
||||
g_Vars.currentplayer->isdead = false;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_DUEL) {
|
||||
if (g_Vars.stagenum == STAGE_DUEL) {
|
||||
g_Vars.currentplayer->bondhealth = 0.01f;
|
||||
} else if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MAIANSOS) {
|
||||
} else if (g_Vars.stagenum == STAGE_MAIANSOS) {
|
||||
g_Vars.currentplayer->bondhealth = 0.5f;
|
||||
} else {
|
||||
g_Vars.currentplayer->bondhealth = 1;
|
||||
|
|
@ -1956,8 +1956,7 @@ void playerUpdateZoom(void)
|
|||
scale = 0.1;
|
||||
}
|
||||
|
||||
stage = stageGetCurrent();
|
||||
currentPlayerSetScaleBg2Gfx((1 - (1 - stage->unk34) * (1 - scale) * (10.f / 9.0f)) * scale);
|
||||
currentPlayerSetScaleBg2Gfx((1 - (1 - g_CurrentStage->unk34) * (1 - scale) * (10.f / 9.0f)) * scale);
|
||||
}
|
||||
|
||||
void playerStopAudioForPause(void)
|
||||
|
|
@ -3367,14 +3366,14 @@ void playerTick(bool arg0)
|
|||
| 1 << CHEAT_HOTSHOT
|
||||
| 1 << CHEAT_HITANDRUN
|
||||
| 1 << CHEAT_ALIEN)) == 0) {
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
prop = chrSpawnAtCoord(BODY_DARK_COMBAT, HEAD_VD,
|
||||
&g_Vars.currentplayer->prop->pos,
|
||||
g_Vars.currentplayer->prop->rooms,
|
||||
BADDEG2RAD(g_Vars.currentplayer->vv_theta / 2),
|
||||
ailistFindById(GAILIST_INIT_DEFAULT_BUDDY),
|
||||
SPAWNFLAG_00000010);
|
||||
} else if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) {
|
||||
} else if (g_Vars.stagenum == STAGE_MBR) {
|
||||
prop = chrSpawnAtCoord(BODY_MRBLONDE, HEAD_MRBLONDE,
|
||||
&g_Vars.currentplayer->prop->pos,
|
||||
g_Vars.currentplayer->prop->rooms,
|
||||
|
|
@ -3402,7 +3401,7 @@ void playerTick(bool arg0)
|
|||
chr->accuracyrating = 100;
|
||||
chr->speedrating = 100;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
chrAddHealth(chr, 40);
|
||||
} else {
|
||||
chrAddHealth(chr, 20);
|
||||
|
|
@ -3420,7 +3419,7 @@ void playerTick(bool arg0)
|
|||
}
|
||||
|
||||
if (cheatIsActive(CHEAT_PUGILIST)) {
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) {
|
||||
if (g_Vars.stagenum == STAGE_MBR) {
|
||||
prop = chrSpawnAtCoord(BODY_MRBLONDE, HEAD_MRBLONDE,
|
||||
&g_Vars.currentplayer->prop->pos,
|
||||
g_Vars.currentplayer->prop->rooms,
|
||||
|
|
@ -3448,7 +3447,7 @@ void playerTick(bool arg0)
|
|||
chr->accuracyrating = 100;
|
||||
chr->speedrating = 100;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
chrAddHealth(chr, 40);
|
||||
} else {
|
||||
chrAddHealth(chr, 20);
|
||||
|
|
@ -3464,7 +3463,7 @@ void playerTick(bool arg0)
|
|||
}
|
||||
|
||||
if (cheatIsActive(CHEAT_HITANDRUN)) {
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) {
|
||||
if (g_Vars.stagenum == STAGE_MBR) {
|
||||
prop = chrSpawnAtCoord(BODY_MRBLONDE, HEAD_MRBLONDE,
|
||||
&g_Vars.currentplayer->prop->pos,
|
||||
g_Vars.currentplayer->prop->rooms,
|
||||
|
|
@ -3492,7 +3491,7 @@ void playerTick(bool arg0)
|
|||
chr->accuracyrating = 50;
|
||||
chr->speedrating = 100;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
chrAddHealth(chr, 20);
|
||||
} else {
|
||||
chrAddHealth(chr, 10);
|
||||
|
|
@ -3510,7 +3509,7 @@ void playerTick(bool arg0)
|
|||
}
|
||||
|
||||
if (cheatIsActive(CHEAT_HOTSHOT)) {
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) {
|
||||
if (g_Vars.stagenum == STAGE_MBR) {
|
||||
prop = chrSpawnAtCoord(BODY_MRBLONDE, HEAD_MRBLONDE,
|
||||
&g_Vars.currentplayer->prop->pos,
|
||||
g_Vars.currentplayer->prop->rooms,
|
||||
|
|
@ -3538,7 +3537,7 @@ void playerTick(bool arg0)
|
|||
chr->accuracyrating = 50;
|
||||
chr->speedrating = 100;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
chrAddHealth(chr, 40);
|
||||
} else {
|
||||
chrAddHealth(chr, 20);
|
||||
|
|
@ -3557,7 +3556,7 @@ void playerTick(bool arg0)
|
|||
}
|
||||
|
||||
if (cheatIsActive(CHEAT_ALIEN)) {
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR) {
|
||||
if (g_Vars.stagenum == STAGE_MBR) {
|
||||
prop = chrSpawnAtCoord(BODY_MRBLONDE, HEAD_MRBLONDE,
|
||||
&g_Vars.currentplayer->prop->pos,
|
||||
g_Vars.currentplayer->prop->rooms,
|
||||
|
|
@ -3585,7 +3584,7 @@ void playerTick(bool arg0)
|
|||
chr->accuracyrating = 100;
|
||||
chr->speedrating = 100;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
chrAddHealth(chr, 40);
|
||||
} else {
|
||||
chrAddHealth(chr, 20);
|
||||
|
|
|
|||
|
|
@ -86,11 +86,11 @@ void playerInitEyespy(void)
|
|||
playerchr = g_Vars.currentplayer->prop->chr;
|
||||
propchr->team = playerchr->team;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_AIRBASE) {
|
||||
if (g_Vars.stagenum == STAGE_AIRBASE) {
|
||||
g_Vars.currentplayer->eyespy->mode = EYESPYMODE_DRUGSPY;
|
||||
g_Weapons[WEAPON_EYESPY]->name = L_GUN_061; // "DrugSpy"
|
||||
g_Weapons[WEAPON_EYESPY]->shortname = L_GUN_061; // "DrugSpy"
|
||||
} else if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_MBR || stageGetIndex(g_Vars.stagenum) == STAGEINDEX_CHICAGO) {
|
||||
} else if (g_Vars.stagenum == STAGE_MBR || g_Vars.stagenum == STAGE_CHICAGO) {
|
||||
g_Vars.currentplayer->eyespy->mode = EYESPYMODE_BOMBSPY;
|
||||
} else {
|
||||
g_Vars.currentplayer->eyespy->mode = EYESPYMODE_CAMSPY;
|
||||
|
|
|
|||
|
|
@ -9493,7 +9493,7 @@ void chopperTickFall(struct prop *chopperprop)
|
|||
|
||||
goalroty = chopper->roty + *x + *z;
|
||||
|
||||
if (stageGetIndex(g_Vars.stagenum) == STAGEINDEX_EXTRACTION) {
|
||||
if (g_Vars.stagenum == STAGE_EXTRACTION) {
|
||||
// The Extraction chopper falls without any collision checks and is
|
||||
// reaped once it reaches the lower barrier
|
||||
if (chopperprop->pos.y < -30000) {
|
||||
|
|
|
|||
|
|
@ -296,5 +296,6 @@ extern u8 g_HudmsgsActive;
|
|||
extern struct roommtx *g_RoomMtxes;
|
||||
extern s32 g_NextRoomMtx;
|
||||
extern s32 g_BgAlwaysRoom;
|
||||
extern struct stagetableentry *g_CurrentStage;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue