From eaa155d52ef38b832f670f99f9509b6c75db2afd Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 23 Nov 2021 00:13:30 +0100 Subject: [PATCH] - various sectnums, --- source/games/exhumed/src/aistuff.h | 2 +- source/games/exhumed/src/bullet.cpp | 2 +- source/games/exhumed/src/fish.cpp | 4 ++-- source/games/exhumed/src/gun.cpp | 13 ++++++------- source/games/exhumed/src/init.cpp | 2 +- source/games/exhumed/src/lavadude.cpp | 17 ++++++++--------- source/games/exhumed/src/move.cpp | 20 +++++++++----------- source/games/exhumed/src/osdcmds.cpp | 2 +- 8 files changed, 29 insertions(+), 33 deletions(-) diff --git a/source/games/exhumed/src/aistuff.h b/source/games/exhumed/src/aistuff.h index 73259b5c7..a1522ea1d 100644 --- a/source/games/exhumed/src/aistuff.h +++ b/source/games/exhumed/src/aistuff.h @@ -168,7 +168,7 @@ void DoRegenerates(); // lavadude -void BuildLava(DExhumedActor* nSprite, int x, int y, int z, int nSector, int nAngle, int nChannel); +void BuildLava(DExhumedActor* nSprite, int x, int y, int z, sectortype* nSector, int nAngle, int nChannel); DExhumedActor* BuildLavaLimb(DExhumedActor* nSprite, int edx, int ebx); void FuncLavaLimb(int, int, int, int); void FuncLava(int, int, int, int); diff --git a/source/games/exhumed/src/bullet.cpp b/source/games/exhumed/src/bullet.cpp index ad7542970..c1ed841cc 100644 --- a/source/games/exhumed/src/bullet.cpp +++ b/source/games/exhumed/src/bullet.cpp @@ -411,7 +411,7 @@ MOVEEND: nVal = coll.type || coll.exbits? 1:0; - // pSprite->sectnum may have changed since we set nSectFlag ? + // pSprite.sectnum may have changed since we set nSectFlag ? int nFlagVal = nSectFlag ^ pSprite->sector()->Flag; if (nFlagVal & kSectUnderwater) { diff --git a/source/games/exhumed/src/fish.cpp b/source/games/exhumed/src/fish.cpp index 839bc6412..cd0dc5b94 100644 --- a/source/games/exhumed/src/fish.cpp +++ b/source/games/exhumed/src/fish.cpp @@ -437,14 +437,14 @@ void AIFish::Tick(RunListEvent* ev) int x = pSprite->x; int y = pSprite->y; int z = pSprite->z; - int nSector =pSprite->sectnum; + auto pSector =pSprite->sector(); // loc_2EF54 Collision coll = movesprite(pActor, pSprite->xvel << 13, pSprite->yvel << 13, pSprite->zvel << 2, 0, 0, CLIPMASK0); if (!(pSprite->sector()->Flag & kSectUnderwater)) { - ChangeActorSect(pActor, nSector); + ChangeActorSect(pActor, pSector); pSprite->x = x; pSprite->y = y; pSprite->z = z; diff --git a/source/games/exhumed/src/gun.cpp b/source/games/exhumed/src/gun.cpp index e063b0434..e74860027 100644 --- a/source/games/exhumed/src/gun.cpp +++ b/source/games/exhumed/src/gun.cpp @@ -241,7 +241,7 @@ void ResetSwordSeqs() WeaponInfo[kWeaponSword].b[3] = 7; } -Collision CheckCloseRange(int nPlayer, int *x, int *y, int *z, int *nSector) +Collision CheckCloseRange(int nPlayer, int *x, int *y, int *z, sectortype* *nSector) { int hitSect, hitWall, hitSprite; int hitX, hitY, hitZ; @@ -254,7 +254,7 @@ Collision CheckCloseRange(int nPlayer, int *x, int *y, int *z, int *nSector) vec3_t startPos = { *x, *y, *z }; hitdata_t hitData; - hitscan(&startPos, *nSector, xVect, yVect, 0, &hitData, CLIPMASK1); + hitscan(&startPos, sectnum(*nSector), xVect, yVect, 0, &hitData, CLIPMASK1); hitX = hitData.pos.x; hitY = hitData.pos.y; hitZ = hitData.pos.z; @@ -282,7 +282,7 @@ Collision CheckCloseRange(int nPlayer, int *x, int *y, int *z, int *nSector) *x = hitX; *y = hitY; *z = hitZ; - *nSector = hitSect; + *nSector = §or[hitSect]; if (hitSprite > -1) { c.setSprite(&exhumedActors[hitSprite]); @@ -697,7 +697,7 @@ loc_flag: } } - int nSectorB = pPlayerSprite->sectnum; + auto pSectorB = pPlayerSprite->sector(); switch (nWeapon) { @@ -717,8 +717,7 @@ loc_flag: var_28 = 9; } - auto cRange = CheckCloseRange(nPlayer, &theX, &theY, &theZ, &nSectorB); - auto pSectorB = §or[nSectorB]; + auto cRange = CheckCloseRange(nPlayer, &theX, &theY, &theZ, &pSectorB); if (cRange.type != kHitNone) { @@ -820,7 +819,7 @@ loc_flag: auto t = sPlayerInput[nPlayer].pTarget; // only autoaim if target is in front of the player. auto pTargetSprite = &t->s(); - assert(validSectorIndex(pTargetSprite->sectnum)); + assert(pTargetSprite->sector()); int angletotarget = bvectangbam(pTargetSprite->x - pPlayerSprite->x, pTargetSprite->y - pPlayerSprite->y).asbuild(); int anglediff = (pPlayerSprite->ang - angletotarget) & 2047; if (anglediff < 512 || anglediff > 1536) diff --git a/source/games/exhumed/src/init.cpp b/source/games/exhumed/src/init.cpp index ad2abc612..e161675dd 100644 --- a/source/games/exhumed/src/init.cpp +++ b/source/games/exhumed/src/init.cpp @@ -460,7 +460,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag) return; } - BuildLava(pActor, 0, 0, 0, 0, 0, nChannel); + BuildLava(pActor, 0, 0, 0, nullptr, 0, nChannel); return; } case 107: diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp index 8702eb22c..19b9cf150 100644 --- a/source/games/exhumed/src/lavadude.cpp +++ b/source/games/exhumed/src/lavadude.cpp @@ -40,9 +40,8 @@ static actionSeq LavadudeSeq[] = { DExhumedActor* BuildLavaLimb(DExhumedActor* pActor, int move, int ebx) { auto pSprite = &pActor->s(); - int nSector =pSprite->sectnum; - auto pLimbActor = insertActor(nSector, 118); + auto pLimbActor = insertActor(pSprite->sector(), 118); auto pLimbSprite = &pLimbActor->s(); pLimbSprite->x = pSprite->x; @@ -104,18 +103,18 @@ void AILavaDudeLimb::Draw(RunListEvent* ev) } -void BuildLava(DExhumedActor* pActor, int x, int y, int, int nSector, int nAngle, int nChannel) +void BuildLava(DExhumedActor* pActor, int x, int y, int, sectortype* pSector, int nAngle, int nChannel) { spritetype* pSprite; if (pActor == nullptr) { - pActor = insertActor(nSector, 118); + pActor = insertActor(pSector, 118); pSprite = &pActor->s(); } else { pSprite = &pActor->s(); - nSector = pSprite->sectnum; + pSector = pSprite->sector(); nAngle = pSprite->ang; x = pSprite->x; y = pSprite->y; @@ -125,7 +124,7 @@ void BuildLava(DExhumedActor* pActor, int x, int y, int, int nSector, int nAngle pSprite->x = x; pSprite->y = y; - pSprite->z = sector[nSector].floorz; + pSprite->z = pSector->floorz; pSprite->cstat = 0x8000; pSprite->xrepeat = 200; pSprite->yrepeat = 200; @@ -296,13 +295,13 @@ void AILavaDude::Tick(RunListEvent* ev) int x = pSprite->x; int y = pSprite->y; int z = pSprite->z; - int nSector =pSprite->sectnum; + auto pSector =pSprite->sector(); auto coll = movesprite(pActor, pSprite->xvel << 8, pSprite->yvel << 8, 0, 0, 0, CLIPMASK0); - if (nSector != pSprite->sectnum) + if (pSector != pSprite->sector()) { - ChangeActorSect(pActor, nSector); + ChangeActorSect(pActor, pSector); pSprite->x = x; pSprite->y = y; pSprite->z = z; diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 2f884e2a3..34c57a3d8 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -298,12 +298,11 @@ int BelowNear(DExhumedActor* pActor, int x, int y, int walldist, int _nSector) Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdist) { spritetype* pSprite = &pActor->s(); - int nSector =pSprite->sectnum; auto pSector = pSprite->sector(); - assert(validSectorIndex(nSector)); + assert(pSector); - overridesect = nSector; - int edi = nSector; + overridesect = sectnum(pSector); + auto pSect2 = pSector; // backup cstat uint16_t cstat = pSprite->cstat; @@ -312,17 +311,17 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis Collision nRet(0); - int nSectFlags = sector[nSector].Flag; + int nSectFlags = pSector->Flag; if (nSectFlags & kSectUnderwater) { z >>= 1; } int spriteZ = pSprite->z; - int floorZ = sector[nSector].floorz; + int floorZ = pSector->floorz; int ebp = spriteZ + z; - int eax = sector[nSector].ceilingz + (height >> 1); + int eax = pSector->ceilingz + (height >> 1); if ((nSectFlags & kSectUnderwater) && ebp < eax) { ebp = eax; @@ -334,11 +333,11 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis ChangeActorSect(pActor, pSprite->sector()->pBelow); } - if (edi != nSector) + if (pSect2 != pSector) { pSprite->z = ebp; - if (sector[edi].Flag & kSectUnderwater) + if (pSect2->Flag & kSectUnderwater) { if (pActor == PlayerList[nLocalPlayer].Actor()) { D3PlayFX(StaticSound[kSound2], pActor); @@ -451,9 +450,8 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis if (spriteZ <= floorZ && ebp > floorZ) { - if ((sector[nSector].Depth != 0) || (edi != nSector && (sector[edi].Flag & kSectUnderwater))) + if ((pSector->Depth != 0) || (pSect2 != pSector && (pSect2->Flag & kSectUnderwater))) { - assert(validSectorIndex(nSector)); BuildSplash(pActor, pSector); } } diff --git a/source/games/exhumed/src/osdcmds.cpp b/source/games/exhumed/src/osdcmds.cpp index 8442437c3..82af381ae 100644 --- a/source/games/exhumed/src/osdcmds.cpp +++ b/source/games/exhumed/src/osdcmds.cpp @@ -78,7 +78,7 @@ static int osdcmd_spawn(CCmdFuncPtr parm) else if (!stricmp(c, "mummy")) BuildMummy(nullptr, initx, inity, sectp->floorz, initsect, inita); else if (!stricmp(c, "fish")) BuildFish(nullptr, initx, inity, initz + PlayerList[nLocalPlayer].eyelevel, initsect, inita); else if (!stricmp(c, "lion")) BuildLion(nullptr, initx, inity, sectp->floorz, initsect, inita); - else if (!stricmp(c, "lava")) BuildLava(nullptr, initx, inity, sectp->floorz, initsect, inita, nNetPlayerCount); + else if (!stricmp(c, "lava")) BuildLava(nullptr, initx, inity, sectp->floorz, sectp, inita, nNetPlayerCount); else if (!stricmp(c, "rex")) BuildRex(nullptr, initx, inity, sectp->floorz, initsect, inita, nNetPlayerCount); else if (!stricmp(c, "set")) BuildSet(nullptr, initx, inity, sectp->floorz, initsect, inita, nNetPlayerCount); else if (!stricmp(c, "queen")) BuildQueen(nullptr, initx, inity, sectp->floorz, initsect, inita, nNetPlayerCount);