From 9d642e18e7c05fe31f5cf1315ba02d7fc6fbbade Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 21 Oct 2021 18:28:06 +0200 Subject: [PATCH] - BuildDrip / ProcessTrailSprite --- source/games/exhumed/src/aistuff.h | 4 ++-- source/games/exhumed/src/init.cpp | 4 ++-- source/games/exhumed/src/object.cpp | 34 ++++++++++++++--------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/source/games/exhumed/src/aistuff.h b/source/games/exhumed/src/aistuff.h index f90e30903..9964dac83 100644 --- a/source/games/exhumed/src/aistuff.h +++ b/source/games/exhumed/src/aistuff.h @@ -332,12 +332,12 @@ void FuncSpark(int, int, int, int); void SnapBobs(short nSectorA, short nSectorB); short FindWallSprites(short nSector); void AddMovingSector(int nSector, int edx, int ebx, int ecx); -void ProcessTrailSprite(int nSprite, int nLotag, int nHitag); +void ProcessTrailSprite(DExhumedActor* nSprite, int nLotag, int nHitag); void AddSectorBob(int nSector, int nHitag, int bx); DExhumedActor* BuildObject(DExhumedActor* nSprite, int nOjectType, int nHitag); int BuildArrow(DExhumedActor* nSprite, int nVal); int BuildFireBall(DExhumedActor*, int a, int b); -void BuildDrip(int nSprite); +void BuildDrip(DExhumedActor* nSprite); DExhumedActor* BuildEnergyBlock(short nSector); int BuildElevC(int arg1, int nChannel, int nSector, int nWallSprite, int arg5, int arg6, int nCount, ...); int BuildElevF(int nChannel, int nSector, int nWallSprite, int arg_4, int arg_5, int nCount, ...); diff --git a/source/games/exhumed/src/init.cpp b/source/games/exhumed/src/init.cpp index 5d4e39821..6f745df19 100644 --- a/source/games/exhumed/src/init.cpp +++ b/source/games/exhumed/src/init.cpp @@ -334,7 +334,7 @@ void ProcessSpriteTag(short nSprite, short nLotag, short nHitag) if (nLotag >= 900 && nLotag <= 949) { - ProcessTrailSprite(nSprite, nLotag, nHitag); + ProcessTrailSprite(pActor, nLotag, nHitag); return; } @@ -757,7 +757,7 @@ void ProcessSpriteTag(short nSprite, short nLotag, short nHitag) } case 70: { - BuildDrip(nSprite); + BuildDrip(pActor); return; } case 63: diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index 83d771509..3943539e9 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -68,8 +68,8 @@ struct Bob struct Drip { - short nSprite; - short field_2; + DExhumedActor* pActor; + short nCount; }; // 56 bytes @@ -226,8 +226,8 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, Drip& w, Drip* def { if (arc.BeginObject(keyname)) { - arc("sprite", w.nSprite) - ("at2", w.field_2) + arc("sprite", w.pActor) + ("at2", w.nCount) .EndObject(); } return arc; @@ -2237,12 +2237,12 @@ void FuncObject(int nObject, int nMessage, int nDamage, int nRun) runlist_DispatchEvent(&ai, nObject, nMessage, nDamage, nRun); } -void BuildDrip(int nSprite) +void BuildDrip(DExhumedActor* pActor) { - auto pSprite = &sprite[nSprite]; + auto pSprite = &pActor->s(); auto nDrips = sDrip.Reserve(1); - sDrip[nDrips].nSprite = nSprite; - sDrip[nDrips].field_2 = RandomSize(8) + 90; + sDrip[nDrips].pActor = pActor; + sDrip[nDrips].nCount = RandomSize(8) + 90; pSprite->cstat = 0x8000u; } @@ -2250,11 +2250,11 @@ void DoDrips() { for (unsigned i = 0; i < sDrip.Size(); i++) { - sDrip[i].field_2--; - if (sDrip[i].field_2 <= 0) + sDrip[i].nCount--; + if (sDrip[i].nCount <= 0) { - short nSprite = sDrip[i].nSprite; - auto pSprite = &sprite[nSprite]; + auto pActor = sDrip[i].pActor; + auto pSprite = &pActor->s(); short nSeqOffset = SeqOffsets[kSeqDrips]; @@ -2262,9 +2262,9 @@ void DoDrips() nSeqOffset++; } - seq_MoveSequence(nSprite, nSeqOffset, RandomSize(2) % SeqSize[nSeqOffset]); + seq_MoveSequence(pActor, nSeqOffset, RandomSize(2) % SeqSize[nSeqOffset]); - sDrip[i].field_2 = RandomSize(8) + 90; + sDrip[i].nCount = RandomSize(8) + 90; } } @@ -2371,9 +2371,9 @@ int FindTrail(int nVal) } // ok ? -void ProcessTrailSprite(int nSprite, int nLotag, int nHitag) +void ProcessTrailSprite(DExhumedActor* pActor, int nLotag, int nHitag) { - auto pSprite = &sprite[nSprite]; + auto pSprite = &pActor->s(); auto nPoint = sTrailPoint.Reserve(1); sTrailPoint[nPoint].x = pSprite->x; @@ -2427,7 +2427,7 @@ void ProcessTrailSprite(int nSprite, int nLotag, int nHitag) } } - mydeletesprite(nSprite); + DeleteActor(pActor); } // ok?