- Exhumed: Wrap all access to SeqBase[] array and make static.

This commit is contained in:
Mitchell Richters 2023-04-06 18:55:11 +10:00
parent 53b7235adf
commit 8df52e1265
14 changed files with 36 additions and 26 deletions

View file

@ -121,7 +121,7 @@ void AIAnubis::Tick(RunListEvent* ev)
const auto ap = ev->pObjActor;
const int nAction = ap->nAction;
const int nSeq = getSeqFromId(kSeqAnubis, AnubisSeq[nAction].a);
const int nFrame = SeqBase[nSeq] + ap->nFrame;
const int nFrame = getSeqFrame(nSeq, ap->nFrame);
const int nFlag = FrameFlag[nFrame];
bool bVal = false;

View file

@ -802,7 +802,7 @@ void AIBullet::Tick(RunListEvent* ev)
int nSeq = getSeqFromId(BulletList[nBullet].nSeq);
DExhumedActor* pActor = BulletList[nBullet].pActor;
int nFlag = FrameFlag[SeqBase[nSeq] + BulletList[nBullet].nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, BulletList[nBullet].nFrame)];
seq_MoveSequence(pActor, nSeq, BulletList[nBullet].nFrame);

View file

@ -218,7 +218,7 @@ void AILavaDude::Tick(RunListEvent* ev)
pActor->spr.picnum = seq_GetSeqPicnum2(nSeq, pActor->nFrame);
int var_38 = pActor->nFrame;
int nFlag = FrameFlag[SeqBase[nSeq] + var_38];
int nFlag = FrameFlag[getSeqFrame(nSeq, var_38)];
int var_1C = 0;

View file

@ -211,7 +211,7 @@ void AILion::Tick(RunListEvent* ev)
bVal = true;
}
int nFlag = FrameFlag[SeqBase[nSeq] + pActor->nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, pActor->nFrame)];
DExhumedActor* pTarget = pActor->pTarget;
auto nMov = MoveCreatureWithCaution(pActor);

View file

@ -143,7 +143,7 @@ void AIMummy::Tick(RunListEvent* ev)
pActor->spr.picnum = seq_GetSeqPicnum2(nSeq, pActor->nFrame);
int nFrame = SeqBase[nSeq] + pActor->nFrame;
int nFrame = getSeqFrame(nSeq, pActor->nFrame);
int nFrameFlag = FrameFlag[nFrame];
seq_MoveSequence(pActor, nSeq, pActor->nFrame);

View file

@ -1252,7 +1252,7 @@ void AIQueen::Tick(RunListEvent* ev)
bVal = true;
}
int nFlag = FrameFlag[SeqBase[nSeq] + QueenList[nQueen].nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, QueenList[nQueen].nFrame)];
if (pActor != nullptr)
{

View file

@ -215,7 +215,7 @@ void AIRex::Tick(RunListEvent* ev)
}
}
int nFlag = FrameFlag[SeqBase[nSeq] + pActor->nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, pActor->nFrame)];
DExhumedActor* pTarget = pActor->pTarget;

View file

@ -223,7 +223,7 @@ void AIRoach::Tick(RunListEvent* ev)
pActor->nFrame = 0;
}
int nFlag = FrameFlag[SeqBase[nSeq] + pActor->nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, pActor->nFrame)];
DExhumedActor* pTarget = pActor->pTarget;
if (nAction > 5) {

View file

@ -219,7 +219,7 @@ void AIScorp::Tick(RunListEvent* ev)
bVal = true;
}
int nFlag = FrameFlag[SeqBase[nSeq] + pActor->nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, pActor->nFrame)];
pTarget = pActor->pTarget;
switch (nAction)

View file

@ -51,7 +51,7 @@ int16_t nPilotLightBase;
int16_t nShadowWidth = 1;
int16_t nFlameHeight = 1;
int16_t SeqBase[kMaxSequences];
static int16_t SeqBase[kMaxSequences];
int16_t SeqSize[kMaxSequences];
int16_t SeqFlag[kMaxSequences];
@ -168,6 +168,17 @@ int getSeqFromId(const int nSeqFileId, const int nSeq)
//
//---------------------------------------------------------------------------
int getSeqFrame(const int nSeq, const int nFrame)
{
return SeqBase[nSeq] + nFrame;
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
int seq_ReadSequence(const char *seqName)
{
const int16_t StartFrameCount = frames;
@ -319,7 +330,7 @@ int seq_ReadSequence(const char *seqName)
int seq_GetFirstSeqPicnum(int nSeq)
{
int i = getSeqFromId(nSeq);
i = SeqBase[i];
i = getSeqFrame(i);
i = FrameBase[i];
i = ChunkPict[i];
@ -371,7 +382,7 @@ void seq_LoadSequences()
nBackgroundPic = seq_GetFirstSeqPicnum(kSeqBackgrnd);
nPilotLightBase = SeqBase[getSeqFromId(kSeqFlamer, 3)];
nPilotLightBase = getSeqFrame(getSeqFromId(kSeqFlamer, 3));
nPilotLightCount = SeqSize[getSeqFromId(kSeqFlamer, 3)];
nPilotLightFrame = 0;
@ -394,7 +405,7 @@ void seq_LoadSequences()
int16_t seq_GetFrameFlag(int16_t val, int16_t nFrame)
{
return FrameFlag[SeqBase[val] + nFrame];
return FrameFlag[getSeqFrame(val, nFrame)];
}
//---------------------------------------------------------------------------
@ -437,7 +448,7 @@ void seq_DrawPilotLightSeq(double xOffset, double yOffset)
int seq_DrawGunSequence(int nSeqOffset, int16_t dx, double xOffs, double yOffs, int nShade, int nPal, DAngle angle, bool align)
{
int nFrame = SeqBase[nSeqOffset] + dx;
int nFrame = getSeqFrame(nSeqOffset, dx);
int nFrameBase = FrameBase[nFrame];
int nFrameSize = FrameSize[nFrame];
int frameFlag = FrameFlag[nFrame];
@ -479,7 +490,7 @@ int seq_DrawGunSequence(int nSeqOffset, int16_t dx, double xOffs, double yOffs,
int seq_GetFrameSound(int val, int edx)
{
return FrameSound[SeqBase[val] + edx];
return FrameSound[getSeqFrame(val, edx)];
}
//---------------------------------------------------------------------------
@ -492,7 +503,7 @@ void seq_MoveSequence(DExhumedActor* actor, int16_t nSeq, int16_t nFrame)
{
assert(nSeq >= 0); // TEMP
int nSound = FrameSound[SeqBase[nSeq] + nFrame];
int nSound = FrameSound[getSeqFrame(nSeq, nFrame)];
if (nSound == -1) {
return;
}
@ -513,7 +524,7 @@ void seq_MoveSequence(DExhumedActor* actor, int16_t nSeq, int16_t nFrame)
int seq_GetSeqPicnum2(int16_t nSeq, int16_t nFrame)
{
int16_t nBase = FrameBase[SeqBase[nSeq] + nFrame];
int16_t nBase = FrameBase[getSeqFrame(nSeq, nFrame)];
return ChunkPict[nBase];
}
@ -525,8 +536,7 @@ int seq_GetSeqPicnum2(int16_t nSeq, int16_t nFrame)
int seq_GetSeqPicnum(int16_t nSeq, int16_t edx, int16_t ebx)
{
ebx += SeqBase[getSeqFromId(nSeq, edx)];
int16_t c = FrameBase[ebx];
int16_t c = FrameBase[getSeqFrame(getSeqFromId(nSeq, edx))];
return ChunkPict[c];
}
@ -544,7 +554,7 @@ int seq_PlotArrowSequence(int nSprite, int16_t nSeq, int nVal)
int nSeqOffset = (((pTSprite->Angles.Yaw + DAngle90 + DAngle22_5 - nAngle).Buildang()) & kAngleMask) >> 8;
int16_t nFrame = SeqBase[nSeqOffset + nSeq] + nVal;
int16_t nFrame = getSeqFrame(nSeq + nSeqOffset, nVal);
int16_t nFrameBase = FrameBase[nFrame];
int16_t nFrameSize = FrameSize[nFrame];
@ -607,8 +617,8 @@ int seq_PlotSequence(int nSprite, int16_t edx, int16_t nFrame, int16_t ecx)
val = (((pTSprite->Angles.Yaw + DAngle22_5 - nAngle).Buildang()) & kAngleMask) >> 8;
}
int eax = SeqBase[edx] + nFrame;
int edi = SeqBase[edx + val] + nFrame;
int eax = getSeqFrame(edx, nFrame);
int edi = getSeqFrame(edx + val, nFrame);
int16_t nBase = FrameBase[edi];
int16_t nSize = FrameSize[edi];

View file

@ -110,7 +110,6 @@ struct actionSeq
extern int16_t frames;
extern int16_t SeqBase[];
extern int16_t SeqSize[];
extern int16_t FrameFlag[];
@ -143,6 +142,7 @@ int seq_PlotArrowSequence(int nSprite, int16_t nSeq, int nVal);
void seq_DrawPilotLightSeq(double xOffset, double yOffset);
int getSeqFromId(const int nSeqFileId, const int nSeq = 0);
int getSeqFrame(const int nSeq, const int nFrame = 0);
END_PS_NS

View file

@ -287,7 +287,7 @@ void AISet::Tick(RunListEvent* ev)
bVal = true;
}
int nFlag = FrameFlag[SeqBase[nSeq] + pActor->nFrame];
int nFlag = FrameFlag[getSeqFrame(nSeq, pActor->nFrame)];
DExhumedActor* pTarget = pActor->pTarget;
if (pTarget && nAction < 10)

View file

@ -123,7 +123,7 @@ void AISpider::Tick(RunListEvent* ev)
seq_MoveSequence(spp, nSeq, spp->nFrame);
int nFrameFlag = FrameFlag[SeqBase[nSeq] + spp->nFrame];
int nFrameFlag = FrameFlag[getSeqFrame(nSeq, spp->nFrame)];
spp->nFrame++;
if (spp->nFrame >= SeqSize[nSeq]) {

View file

@ -97,7 +97,7 @@ DEFINE_ACTION_FUNCTION(_Exhumed, GetStatusSequence)
PARAM_INT(nSequence);
PARAM_INT(frameindex);
frameindex += SeqBase[nStatusSeqOffset + nSequence];
frameindex += getSeqFrame(nSequence + nStatusSeqOffset);
if (numret > 0) ret[0].SetInt(FrameBase[frameindex]);
if (numret > 1) ret[1].SetInt(FrameSize[frameindex]);
return min(numret, 2);