diff --git a/source/games/exhumed/src/anubis.cpp b/source/games/exhumed/src/anubis.cpp index 8d16e4dbd..405ffca31 100644 --- a/source/games/exhumed/src/anubis.cpp +++ b/source/games/exhumed/src/anubis.cpp @@ -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; diff --git a/source/games/exhumed/src/bullet.cpp b/source/games/exhumed/src/bullet.cpp index 60476e25c..9e4865527 100644 --- a/source/games/exhumed/src/bullet.cpp +++ b/source/games/exhumed/src/bullet.cpp @@ -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); diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp index 8a8a2ba14..8ccc8e95d 100644 --- a/source/games/exhumed/src/lavadude.cpp +++ b/source/games/exhumed/src/lavadude.cpp @@ -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; diff --git a/source/games/exhumed/src/lion.cpp b/source/games/exhumed/src/lion.cpp index ca9cf1ac8..4af73c928 100644 --- a/source/games/exhumed/src/lion.cpp +++ b/source/games/exhumed/src/lion.cpp @@ -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); diff --git a/source/games/exhumed/src/mummy.cpp b/source/games/exhumed/src/mummy.cpp index 4df71638d..64c372fdd 100644 --- a/source/games/exhumed/src/mummy.cpp +++ b/source/games/exhumed/src/mummy.cpp @@ -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); diff --git a/source/games/exhumed/src/queen.cpp b/source/games/exhumed/src/queen.cpp index 8b37897e6..5ce39ff1d 100644 --- a/source/games/exhumed/src/queen.cpp +++ b/source/games/exhumed/src/queen.cpp @@ -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) { diff --git a/source/games/exhumed/src/rex.cpp b/source/games/exhumed/src/rex.cpp index 9fbbc5040..4ba80ce5b 100644 --- a/source/games/exhumed/src/rex.cpp +++ b/source/games/exhumed/src/rex.cpp @@ -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; diff --git a/source/games/exhumed/src/roach.cpp b/source/games/exhumed/src/roach.cpp index daf74879e..2349a70ec 100644 --- a/source/games/exhumed/src/roach.cpp +++ b/source/games/exhumed/src/roach.cpp @@ -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) { diff --git a/source/games/exhumed/src/scorp.cpp b/source/games/exhumed/src/scorp.cpp index 83352cde7..37a3e9532 100644 --- a/source/games/exhumed/src/scorp.cpp +++ b/source/games/exhumed/src/scorp.cpp @@ -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) diff --git a/source/games/exhumed/src/sequence.cpp b/source/games/exhumed/src/sequence.cpp index c42ab8ff6..164f166ed 100644 --- a/source/games/exhumed/src/sequence.cpp +++ b/source/games/exhumed/src/sequence.cpp @@ -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]; diff --git a/source/games/exhumed/src/sequence.h b/source/games/exhumed/src/sequence.h index 7adc5d4dd..3e1295202 100644 --- a/source/games/exhumed/src/sequence.h +++ b/source/games/exhumed/src/sequence.h @@ -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 diff --git a/source/games/exhumed/src/set.cpp b/source/games/exhumed/src/set.cpp index b00832152..c4d556d87 100644 --- a/source/games/exhumed/src/set.cpp +++ b/source/games/exhumed/src/set.cpp @@ -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) diff --git a/source/games/exhumed/src/spider.cpp b/source/games/exhumed/src/spider.cpp index 7f9d830ba..90f7f8254 100644 --- a/source/games/exhumed/src/spider.cpp +++ b/source/games/exhumed/src/spider.cpp @@ -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]) { diff --git a/source/games/exhumed/src/status.cpp b/source/games/exhumed/src/status.cpp index f3f4aee7a..1b1424c29 100644 --- a/source/games/exhumed/src/status.cpp +++ b/source/games/exhumed/src/status.cpp @@ -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);