From e9c9f070ebbbae71e788e1a8aa0b2856aa9a158c Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Thu, 6 Apr 2023 18:51:39 +1000 Subject: [PATCH] - Exhumed: Wrap all access to `SeqStatic[]` array and make static. --- source/games/exhumed/src/anims.cpp | 2 +- source/games/exhumed/src/anubis.cpp | 2 +- source/games/exhumed/src/bubbles.cpp | 2 +- source/games/exhumed/src/bullet.cpp | 2 +- source/games/exhumed/src/fish.cpp | 6 +++--- source/games/exhumed/src/grenade.cpp | 4 ++-- source/games/exhumed/src/gun.cpp | 8 ++++---- source/games/exhumed/src/lavadude.cpp | 2 +- source/games/exhumed/src/lion.cpp | 2 +- source/games/exhumed/src/mummy.cpp | 2 +- source/games/exhumed/src/object.cpp | 6 +++--- source/games/exhumed/src/player.cpp | 6 +++--- source/games/exhumed/src/queen.cpp | 6 +++--- source/games/exhumed/src/ra.cpp | 2 +- source/games/exhumed/src/rat.cpp | 2 +- source/games/exhumed/src/rex.cpp | 2 +- source/games/exhumed/src/roach.cpp | 2 +- source/games/exhumed/src/scorp.cpp | 2 +- source/games/exhumed/src/sequence.cpp | 17 ++++++++++++++--- source/games/exhumed/src/sequence.h | 2 +- source/games/exhumed/src/set.cpp | 4 ++-- source/games/exhumed/src/sound.cpp | 2 +- source/games/exhumed/src/spider.cpp | 2 +- source/games/exhumed/src/status.cpp | 6 +++--- source/games/exhumed/src/wasp.cpp | 2 +- 25 files changed, 53 insertions(+), 42 deletions(-) diff --git a/source/games/exhumed/src/anims.cpp b/source/games/exhumed/src/anims.cpp index c1bf50888..24a7d84f5 100644 --- a/source/games/exhumed/src/anims.cpp +++ b/source/games/exhumed/src/anims.cpp @@ -223,7 +223,7 @@ void AIAnim::Tick(RunListEvent* ev) } pActor->nIndex++; - if (pActor->nIndex >= SeqSize[nSeq]) + if (pActor->nIndex >= getSeqFrameCount(nSeq)) { if (pActor->nAction & 0x10) { diff --git a/source/games/exhumed/src/anubis.cpp b/source/games/exhumed/src/anubis.cpp index 405ffca31..4dbb927fd 100644 --- a/source/games/exhumed/src/anubis.cpp +++ b/source/games/exhumed/src/anubis.cpp @@ -133,7 +133,7 @@ void AIAnubis::Tick(RunListEvent* ev) ap->spr.picnum = seq_GetSeqPicnum2(nSeq, ap->nFrame); ap->nFrame++; - if (ap->nFrame >= SeqSize[nSeq]) + if (ap->nFrame >= getSeqFrameCount(nSeq)) { ap->nFrame = 0; bVal = true; diff --git a/source/games/exhumed/src/bubbles.cpp b/source/games/exhumed/src/bubbles.cpp index 24a405150..4dc56724f 100644 --- a/source/games/exhumed/src/bubbles.cpp +++ b/source/games/exhumed/src/bubbles.cpp @@ -101,7 +101,7 @@ void AIBubble::Tick(RunListEvent* ev) pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) pActor->nFrame = 0; pActor->spr.pos.Z = pActor->vel.Z; diff --git a/source/games/exhumed/src/bullet.cpp b/source/games/exhumed/src/bullet.cpp index 9e4865527..a63a19f8f 100644 --- a/source/games/exhumed/src/bullet.cpp +++ b/source/games/exhumed/src/bullet.cpp @@ -812,7 +812,7 @@ void AIBullet::Tick(RunListEvent* ev) } BulletList[nBullet].nFrame++; - if (BulletList[nBullet].nFrame >= SeqSize[nSeq]) + if (BulletList[nBullet].nFrame >= getSeqFrameCount(nSeq)) { if (!BulletList[nBullet].field_12) { diff --git a/source/games/exhumed/src/fish.cpp b/source/games/exhumed/src/fish.cpp index c102e9e8e..5443d6e08 100644 --- a/source/games/exhumed/src/fish.cpp +++ b/source/games/exhumed/src/fish.cpp @@ -50,7 +50,7 @@ void BuildFishLimb(DExhumedActor* pActor, int anim) auto pChunkActor = insertActor(pActor->sector(), 99); pChunkActor->nCount = anim + 40; - pChunkActor->nFrame = RandomSize(3) % SeqSize[getSeqFromId(kSeqFish, pChunkActor->nCount)]; + pChunkActor->nFrame = RandomSize(3) % getSeqFrameCount(getSeqFromId(kSeqFish, pChunkActor->nCount)); pChunkActor->spr.pos = pActor->spr.pos; pChunkActor->spr.cstat = 0; @@ -100,7 +100,7 @@ void AIFishLimb::Tick(RunListEvent* ev) pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; if (RandomBit()) { @@ -369,7 +369,7 @@ void AIFish::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pActor->nFrame); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) { + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; } diff --git a/source/games/exhumed/src/grenade.cpp b/source/games/exhumed/src/grenade.cpp index 5a385a1d2..824c5acae 100644 --- a/source/games/exhumed/src/grenade.cpp +++ b/source/games/exhumed/src/grenade.cpp @@ -296,11 +296,11 @@ void AIGrenade::Tick(RunListEvent* ev) if (ebp < 0) { - pActor->nHealth += SeqSize[nSeq] << 8; + pActor->nHealth += getSeqFrameCount(nSeq) << 8; } else { - if (ebp >= SeqSize[nSeq]) + if (ebp >= getSeqFrameCount(nSeq)) { if (pActor->nFrame) { diff --git a/source/games/exhumed/src/gun.cpp b/source/games/exhumed/src/gun.cpp index 62598bdfd..50a1dcb68 100644 --- a/source/games/exhumed/src/gun.cpp +++ b/source/games/exhumed/src/gun.cpp @@ -393,7 +393,7 @@ void MoveWeapons(int nPlayer) dword_96E22 = 0; } - if (pPlayer->nSeqSize2 >= SeqSize[var_3C]) + if (pPlayer->nSeqSize2 >= getSeqFrameCount(var_3C)) { if (pPlayer->nNextWeapon == -1) { @@ -471,7 +471,7 @@ void MoveWeapons(int nPlayer) } else { - pPlayer->nSeqSize2 = SeqSize[var_3C] - 1; + pPlayer->nSeqSize2 = getSeqFrameCount(var_3C) - 1; continue; } } @@ -568,7 +568,7 @@ void MoveWeapons(int nPlayer) SelectNewWeapon(nPlayer); pPlayer->nState = 5; - pPlayer->nSeqSize2 = SeqSize[getSeqFromId(nSeq, WeaponInfo[kWeaponGrenade].b[0])] - 1; // CHECKME + pPlayer->nSeqSize2 = getSeqFrameCount(getSeqFromId(nSeq, WeaponInfo[kWeaponGrenade].b[0])) - 1; // CHECKME goto loc_flag; // FIXME } } @@ -640,7 +640,7 @@ void MoveWeapons(int nPlayer) pPlayer->nSeqSize2 = 0; continue; } - } // end of if (pPlayer->field_34 >= SeqSize[var_3C]) + } // end of if (pPlayer->field_34 >= getSeqFrameCount(var_3C)) loc_flag: diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp index 8ccc8e95d..2ebaf4109 100644 --- a/source/games/exhumed/src/lavadude.cpp +++ b/source/games/exhumed/src/lavadude.cpp @@ -227,7 +227,7 @@ void AILavaDude::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, var_38); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { var_1C = 1; pActor->nFrame = 0; diff --git a/source/games/exhumed/src/lion.cpp b/source/games/exhumed/src/lion.cpp index 4af73c928..1508e4696 100644 --- a/source/games/exhumed/src/lion.cpp +++ b/source/games/exhumed/src/lion.cpp @@ -205,7 +205,7 @@ void AILion::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pActor->nFrame); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; bVal = true; diff --git a/source/games/exhumed/src/mummy.cpp b/source/games/exhumed/src/mummy.cpp index 64c372fdd..e9a475ec0 100644 --- a/source/games/exhumed/src/mummy.cpp +++ b/source/games/exhumed/src/mummy.cpp @@ -151,7 +151,7 @@ void AIMummy::Tick(RunListEvent* ev) bool bVal = false; pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index a711686cc..dd52293c4 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -1893,7 +1893,7 @@ DExhumedActor* BuildObject(DExhumedActor* pActor, int nOjectType, int nHitag) if (!nOjectType) // if not Explosion Trigger (e.g. Exploding Fire Cauldron) { - pActor->nFrame = RandomSize(4) % (SeqSize[pActor->nIndex] - 1); + pActor->nFrame = RandomSize(4) % (getSeqFrameCount(pActor->nIndex) - 1); } auto pActor2 = insertActor(pActor->sector(), 0); @@ -1963,7 +1963,7 @@ void AIObject::Tick(RunListEvent* ev) if (bx != -1) { pActor->nFrame++; - if (pActor->nFrame >= SeqSize[bx]) { + if (pActor->nFrame >= getSeqFrameCount(bx)) { pActor->nFrame = 0; } @@ -2205,7 +2205,7 @@ void DoDrips() nSeqOffset++; } - seq_MoveSequence(pActor, nSeqOffset, RandomSize(2) % SeqSize[nSeqOffset]); + seq_MoveSequence(pActor, nSeqOffset, RandomSize(2) % getSeqFrameCount(nSeqOffset)); sDrip[i].nCount = RandomSize(8) + 90; } diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index ca171d1f6..9d00968bc 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -1917,7 +1917,7 @@ static void doPlayerActionSequence(Player* const pPlayer) seq_MoveSequence(pPlayerActor, nSeq, pPlayer->nSeqSize); pPlayer->nSeqSize++; - if (pPlayer->nSeqSize < SeqSize[nSeq]) + if (pPlayer->nSeqSize < getSeqFrameCount(nSeq)) return; pPlayer->nSeqSize = 0; @@ -1927,13 +1927,13 @@ static void doPlayerActionSequence(Player* const pPlayer) default: break; case 3: - pPlayer->nSeqSize = SeqSize[nSeq] - 1; + pPlayer->nSeqSize = getSeqFrameCount(nSeq) - 1; break; case 4: pPlayer->nAction = 0; break; case 16: - pPlayer->nSeqSize = SeqSize[nSeq] - 1; + pPlayer->nSeqSize = getSeqFrameCount(nSeq) - 1; if (pPlayerActor->spr.pos.Z < pPlayerActor->sector()->floorz) pPlayerActor->spr.pos.Z++; diff --git a/source/games/exhumed/src/queen.cpp b/source/games/exhumed/src/queen.cpp index 5ce39ff1d..85b4845bf 100644 --- a/source/games/exhumed/src/queen.cpp +++ b/source/games/exhumed/src/queen.cpp @@ -551,7 +551,7 @@ void AIQueenEgg::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pEgg->nFrame); pEgg->nFrame++; - if (pEgg->nFrame >= SeqSize[nSeq]) + if (pEgg->nFrame >= getSeqFrameCount(nSeq)) { pEgg->nFrame = 0; bVal = true; @@ -805,7 +805,7 @@ void AIQueenHead::Tick(RunListEvent* ev) pActor->spr.picnum = seq_GetSeqPicnum2(nSeq, QueenHead.nFrame); QueenHead.nFrame++; - if (QueenHead.nFrame >= SeqSize[nSeq]) + if (QueenHead.nFrame >= getSeqFrameCount(nSeq)) { QueenHead.nFrame = 0; var_14 = 1; @@ -1246,7 +1246,7 @@ void AIQueen::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, QueenList[nQueen].nFrame); QueenList[nQueen].nFrame++; - if (QueenList[nQueen].nFrame >= SeqSize[nSeq]) + if (QueenList[nQueen].nFrame >= getSeqFrameCount(nSeq)) { QueenList[nQueen].nFrame = 0; bVal = true; diff --git a/source/games/exhumed/src/ra.cpp b/source/games/exhumed/src/ra.cpp index 470cc8bdb..e1d716f86 100644 --- a/source/games/exhumed/src/ra.cpp +++ b/source/games/exhumed/src/ra.cpp @@ -223,7 +223,7 @@ void AIRa::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, Ra[nPlayer].nFrame); Ra[nPlayer].nFrame++; - if (Ra[nPlayer].nFrame >= SeqSize[nSeq]) + if (Ra[nPlayer].nFrame >= getSeqFrameCount(nSeq)) { Ra[nPlayer].nFrame = 0; bVal = true; diff --git a/source/games/exhumed/src/rat.cpp b/source/games/exhumed/src/rat.cpp index fcd5534d5..9ce509903 100644 --- a/source/games/exhumed/src/rat.cpp +++ b/source/games/exhumed/src/rat.cpp @@ -250,7 +250,7 @@ void AIRat::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pActor->nFrame); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { bVal = true; pActor->nFrame = 0; diff --git a/source/games/exhumed/src/rex.cpp b/source/games/exhumed/src/rex.cpp index 4ba80ce5b..a676275c3 100644 --- a/source/games/exhumed/src/rex.cpp +++ b/source/games/exhumed/src/rex.cpp @@ -208,7 +208,7 @@ void AIRex::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pActor->nFrame); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; bVal = true; diff --git a/source/games/exhumed/src/roach.cpp b/source/games/exhumed/src/roach.cpp index 2349a70ec..1bc9dc83a 100644 --- a/source/games/exhumed/src/roach.cpp +++ b/source/games/exhumed/src/roach.cpp @@ -217,7 +217,7 @@ void AIRoach::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pActor->nFrame); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { bVal = true; pActor->nFrame = 0; diff --git a/source/games/exhumed/src/scorp.cpp b/source/games/exhumed/src/scorp.cpp index 37a3e9532..0f4fa1094 100644 --- a/source/games/exhumed/src/scorp.cpp +++ b/source/games/exhumed/src/scorp.cpp @@ -213,7 +213,7 @@ void AIScorp::Tick(RunListEvent* ev) pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; bVal = true; diff --git a/source/games/exhumed/src/sequence.cpp b/source/games/exhumed/src/sequence.cpp index 164f166ed..d0109d629 100644 --- a/source/games/exhumed/src/sequence.cpp +++ b/source/games/exhumed/src/sequence.cpp @@ -52,7 +52,7 @@ int16_t nShadowWidth = 1; int16_t nFlameHeight = 1; static int16_t SeqBase[kMaxSequences]; -int16_t SeqSize[kMaxSequences]; +static int16_t SeqSize[kMaxSequences]; int16_t SeqFlag[kMaxSequences]; int16_t FrameSound[kMaxSEQFrames]; @@ -179,6 +179,17 @@ int getSeqFrame(const int nSeq, const int nFrame) // //--------------------------------------------------------------------------- +int getSeqFrameCount(const int nSeq) +{ + return SeqSize[nSeq]; +} + +//--------------------------------------------------------------------------- +// +// +// +//--------------------------------------------------------------------------- + int seq_ReadSequence(const char *seqName) { const int16_t StartFrameCount = frames; @@ -383,12 +394,12 @@ void seq_LoadSequences() nBackgroundPic = seq_GetFirstSeqPicnum(kSeqBackgrnd); nPilotLightBase = getSeqFrame(getSeqFromId(kSeqFlamer, 3)); - nPilotLightCount = SeqSize[getSeqFromId(kSeqFlamer, 3)]; + nPilotLightCount = getSeqFrameCount(getSeqFromId(kSeqFlamer, 3)); nPilotLightFrame = 0; nFontFirstChar = seq_GetFirstSeqPicnum(kSeqFont2); - int16_t nSize = SeqSize[getSeqFromId(kSeqFont2)]; + int16_t nSize = getSeqFrameCount(getSeqFromId(kSeqFont2)); for (i = 0; i < nSize; i++) { diff --git a/source/games/exhumed/src/sequence.h b/source/games/exhumed/src/sequence.h index 3e1295202..e3fd2d20b 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 SeqSize[]; extern int16_t FrameFlag[]; extern int16_t nShadowWidth; @@ -143,6 +142,7 @@ 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); +int getSeqFrameCount(const int nSeq); END_PS_NS diff --git a/source/games/exhumed/src/set.cpp b/source/games/exhumed/src/set.cpp index c4d556d87..a26ff1a91 100644 --- a/source/games/exhumed/src/set.cpp +++ b/source/games/exhumed/src/set.cpp @@ -281,7 +281,7 @@ void AISet::Tick(RunListEvent* ev) } pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; bVal = true; @@ -567,7 +567,7 @@ void AISet::Tick(RunListEvent* ev) { if (bVal) { - pActor->nFrame = SeqSize[nSeq] - 1; + pActor->nFrame = getSeqFrameCount(nSeq) - 1; } if (nMov.exbits & kHitAux2) diff --git a/source/games/exhumed/src/sound.cpp b/source/games/exhumed/src/sound.cpp index 5f0d5dfe9..707b33036 100644 --- a/source/games/exhumed/src/sound.cpp +++ b/source/games/exhumed/src/sound.cpp @@ -718,7 +718,7 @@ void UpdateCreepySounds() { if (nCreaturesKilled < nCreaturesTotal && !(PlayerList[nLocalPlayer].pPlayerViewSect->Flag & 0x2000)) { - int vsi = seq_GetFrameSound(getSeqFromId(kSeqCreepy), totalmoves % SeqSize[getSeqFromId(kSeqCreepy)]); + int vsi = seq_GetFrameSound(getSeqFromId(kSeqCreepy), totalmoves % getSeqFrameCount(getSeqFromId(kSeqCreepy))); if (vsi >= 0 && (vsi & 0x1ff) < kMaxSounds) { DVector2 adder; diff --git a/source/games/exhumed/src/spider.cpp b/source/games/exhumed/src/spider.cpp index 90f7f8254..00c910b80 100644 --- a/source/games/exhumed/src/spider.cpp +++ b/source/games/exhumed/src/spider.cpp @@ -126,7 +126,7 @@ void AISpider::Tick(RunListEvent* ev) int nFrameFlag = FrameFlag[getSeqFrame(nSeq, spp->nFrame)]; spp->nFrame++; - if (spp->nFrame >= SeqSize[nSeq]) { + if (spp->nFrame >= getSeqFrameCount(nSeq)) { spp->nFrame = 0; } diff --git a/source/games/exhumed/src/status.cpp b/source/games/exhumed/src/status.cpp index 1b1424c29..a06bafd98 100644 --- a/source/games/exhumed/src/status.cpp +++ b/source/games/exhumed/src/status.cpp @@ -109,19 +109,19 @@ DEFINE_ACTION_FUNCTION(_Exhumed, MoveStatusSequence) PARAM_INT(s1); PARAM_INT(s2); seq_MoveSequence(nullptr, nStatusSeqOffset + s1, s2); - ACTION_RETURN_INT(SeqSize[nStatusSeqOffset + s1]); + ACTION_RETURN_INT(getSeqFrameCount(nStatusSeqOffset + s1)); } int SizeOfStatusSequence(int s1) { - return SeqSize[nStatusSeqOffset + s1]; + return getSeqFrameCount(nStatusSeqOffset + s1); } DEFINE_ACTION_FUNCTION_NATIVE(_Exhumed, SizeOfStatusSequence, SizeOfStatusSequence) { PARAM_PROLOGUE; PARAM_INT(s1); - ACTION_RETURN_INT(SeqSize[nStatusSeqOffset + s1]); + ACTION_RETURN_INT(getSeqFrameCount(nStatusSeqOffset + s1)); } //--------------------------------------------------------------------------- diff --git a/source/games/exhumed/src/wasp.cpp b/source/games/exhumed/src/wasp.cpp index 37c267b3c..ce57114f1 100644 --- a/source/games/exhumed/src/wasp.cpp +++ b/source/games/exhumed/src/wasp.cpp @@ -221,7 +221,7 @@ void AIWasp::Tick(RunListEvent* ev) seq_MoveSequence(pActor, nSeq, pActor->nFrame); pActor->nFrame++; - if (pActor->nFrame >= SeqSize[nSeq]) + if (pActor->nFrame >= getSeqFrameCount(nSeq)) { pActor->nFrame = 0; bVal = true;