From 397d9b0d8450e3e09c9c3e19555fd68dbcffeb0b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 24 Dec 2021 14:12:21 +0100 Subject: [PATCH] - made SP_TAG2 a function with an actor parameter. --- source/games/sw/src/_polymost.cpp | 4 +-- source/games/sw/src/break.cpp | 3 +- source/games/sw/src/cache.cpp | 2 +- source/games/sw/src/copysect.cpp | 2 +- source/games/sw/src/draw.cpp | 6 ++-- source/games/sw/src/game.h | 4 +-- source/games/sw/src/jsector.cpp | 2 +- source/games/sw/src/light.cpp | 23 ++----------- source/games/sw/src/light.h | 2 +- source/games/sw/src/quake.cpp | 6 ++-- source/games/sw/src/rotator.cpp | 15 ++++----- source/games/sw/src/sector.cpp | 8 ++--- source/games/sw/src/slidor.cpp | 15 ++++----- source/games/sw/src/spike.cpp | 37 ++++++++------------- source/games/sw/src/sprite.cpp | 18 +++++------ source/games/sw/src/track.cpp | 10 +++--- source/games/sw/src/vator.cpp | 16 ++++----- source/games/sw/src/vis.cpp | 54 +++++++++++++++---------------- source/games/sw/src/wallmove.cpp | 4 +-- source/games/sw/src/warp.cpp | 2 +- source/games/sw/src/weapon.cpp | 19 ++++++----- 21 files changed, 109 insertions(+), 143 deletions(-) diff --git a/source/games/sw/src/_polymost.cpp b/source/games/sw/src/_polymost.cpp index f9b1357f5..92b1a021d 100644 --- a/source/games/sw/src/_polymost.cpp +++ b/source/games/sw/src/_polymost.cpp @@ -101,7 +101,7 @@ void FAF_DrawRooms(int x, int y, int z, fixed_t q16ang, fixed_t q16horiz, int se { // back up ceilingpicnum and ceilingstat SP_TAG5(sp) = sp->sector()->ceilingpicnum; - sp->sector()->ceilingpicnum = SP_TAG2(sp); + sp->sector()->ceilingpicnum = SP_TAG2(actor); SP_TAG4(sp) = sp->sector()->ceilingstat; SET(sp->sector()->ceilingstat, ESectorFlags::FromInt(SP_TAG6(sp))); RESET(sp->sector()->ceilingstat, CSTAT_SECTOR_SKY); @@ -109,7 +109,7 @@ void FAF_DrawRooms(int x, int y, int z, fixed_t q16ang, fixed_t q16horiz, int se else if (SP_TAG3(sp) == 1) { SP_TAG5(sp) = sp->sector()->floorpicnum; - sp->sector()->floorpicnum = SP_TAG2(sp); + sp->sector()->floorpicnum = SP_TAG2(actor); SP_TAG4(sp) = sp->sector()->floorstat; SET(sp->sector()->floorstat, ESectorFlags::FromInt(SP_TAG6(sp))); RESET(sp->sector()->floorstat, CSTAT_SECTOR_SKY); diff --git a/source/games/sw/src/break.cpp b/source/games/sw/src/break.cpp index 33a15b0cd..8fd8b800a 100644 --- a/source/games/sw/src/break.cpp +++ b/source/games/sw/src/break.cpp @@ -536,8 +536,7 @@ DSWActor* FindBreakSpriteMatch(int match) SWStatIterator it(STAT_BREAKABLE); while (auto actor = it.Next()) { - auto sp = &actor->s(); - if (SP_TAG2(sp) == match && actor->spr.picnum == ST1) + if (SP_TAG2(actor) == match && actor->spr.picnum == ST1) { return actor; } diff --git a/source/games/sw/src/cache.cpp b/source/games/sw/src/cache.cpp index a1ada0053..936eb209b 100644 --- a/source/games/sw/src/cache.cpp +++ b/source/games/sw/src/cache.cpp @@ -62,7 +62,7 @@ void PreCacheOverride(void) SWStatIterator it(STAT_CEILING_FLOOR_PIC_OVERRIDE); while (auto actor = it.Next()) { - int j = SP_TAG2(&actor->spr); + int j = SP_TAG2(actor); if(j >= 0 && j <= MAXTILES) markTileForPrecache(j, 0); } diff --git a/source/games/sw/src/copysect.cpp b/source/games/sw/src/copysect.cpp index d7673b517..39aadb690 100644 --- a/source/games/sw/src/copysect.cpp +++ b/source/games/sw/src/copysect.cpp @@ -125,7 +125,7 @@ void CopySectorMatch(int match) { src_sp = &sActor->s(); - if (SP_TAG2(src_sp) == SP_TAG2(dest_sp) && + if (SP_TAG2(sActor) == SP_TAG2(dActor) && SP_TAG3(src_sp) == SP_TAG3(dest_sp)) { ssectp = src_sp->sector(); diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index 24cfa51e2..ad78f422e 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -1378,18 +1378,16 @@ void UpdateWallPortalState() { // back up ceilingpicnum and ceilingstat SP_TAG5(sp) = sp->sector()->ceilingpicnum; - sp->sector()->ceilingpicnum = SP_TAG2(sp); + sp->sector()->ceilingpicnum = SP_TAG2(actor); SP_TAG4(sp) = sp->sector()->ceilingstat; - //SET(sp->sector()->ceilingstat, ((int)SP_TAG7(sp))<<7); SET(sp->sector()->ceilingstat, ESectorFlags::FromInt(SP_TAG6(sp))); RESET(sp->sector()->ceilingstat, CSTAT_SECTOR_SKY); } else if (SP_TAG3(sp) == 1) { SP_TAG5(sp) = sp->sector()->floorpicnum; - sp->sector()->floorpicnum = SP_TAG2(sp); + sp->sector()->floorpicnum = SP_TAG2(actor); SP_TAG4(sp) = sp->sector()->floorstat; - //SET(sp->sector()->floorstat, ((int)SP_TAG7(sp))<<7); SET(sp->sector()->floorstat, ESectorFlags::FromInt(SP_TAG6(sp))); RESET(sp->sector()->floorstat, CSTAT_SECTOR_SKY); } diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 4632f70e3..c7d08e39e 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -2102,8 +2102,8 @@ END_SW_NS BEGIN_SW_NS // Defines for reading in ST1 sprite tagging -inline int SP_TAG1(DSWActor* actor) { return actor->spr.hitag; } -#define SP_TAG2(sp) ((sp)->lotag) +inline int16_t SP_TAG1(DSWActor* actor) { return actor->spr.hitag; } +inline int16_t& SP_TAG2(DSWActor* actor) { return actor->spr.lotag; } #define SP_TAG3(sp) ((sp)->clipdist) #define SP_TAG4(sp) ((sp)->ang) #define SP_TAG5(sp) ((sp)->xvel) diff --git a/source/games/sw/src/jsector.cpp b/source/games/sw/src/jsector.cpp index 97a042f7e..6640f28e3 100644 --- a/source/games/sw/src/jsector.cpp +++ b/source/games/sw/src/jsector.cpp @@ -461,7 +461,7 @@ JS_ProcessEchoSpot() if (dist <= SP_TAG4(tp)) // tag4 = ang { - reverb = SP_TAG2(tp); + reverb = SP_TAG2(actor); if (reverb > 200) reverb = 200; if (reverb < 100) reverb = 100; diff --git a/source/games/sw/src/light.cpp b/source/games/sw/src/light.cpp index bca40cdbf..b2fa4e0c0 100644 --- a/source/games/sw/src/light.cpp +++ b/source/games/sw/src/light.cpp @@ -33,23 +33,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms BEGIN_SW_NS -/* #define LIGHT_Match(sp) (SP_TAG2((sp))) */ -/* #define LIGHT_Type(sp) (SP_TAG3((sp))) */ -/* #define LIGHT_MaxTics(sp) (SP_TAG4((sp))) */ -/* #define LIGHT_MaxBright(sp) (SP_TAG5((sp))) */ -/* #define LIGHT_MaxDark(sp) (SP_TAG6((sp))) */ -/* #define LIGHT_ShadeInc(sp) (SP_TAG7((sp))) */ -/* */ -/* #define LIGHT_Dir(sp) (!!(TEST((sp)->extra, SPRX_BOOL10))) */ -/* #define LIGHT_DirChange(sp) (FLIP((sp)->extra, SPRX_BOOL10)) */ -/* */ -/* #define LIGHT_Shade(sp) ((sp)->shade) */ -/* #define LIGHT_FloorShade(sp) ((sp)->xoffset) */ -/* #define LIGHT_CeilingShade(sp) ((sp)->yoffset) */ -/* #define LIGHT_Tics(sp) ((sp)->pos.Z) */ -/* */ -/* #define LIGHT_DiffuseNum(sp) (SP_TAG3((sp))) */ -/* #define LIGHT_DiffuseMult(sp) (SP_TAG4((sp))) */ void SectorLightShade(DSWActor* actor, short intensity) { @@ -123,7 +106,7 @@ void DiffuseLighting(DSWActor* actor) dsp = &itActor->s(); // make sure matchs match - if (LIGHT_Match(dsp) != LIGHT_Match(sp)) + if (LIGHT_Match(itActor) != LIGHT_Match(actor)) continue; shade = sp->shade + ((LIGHT_DiffuseNum(dsp) + 1) * LIGHT_DiffuseMult(dsp)); @@ -150,7 +133,7 @@ void DoLightingMatch(short match, short state) auto u = itActor->u(); sp = &itActor->s(); - if (LIGHT_Match(sp) != match) + if (LIGHT_Match(itActor) != match) continue; switch (LIGHT_Type(sp)) @@ -276,7 +259,7 @@ void InitLighting(void) if (!TEST_BOOL9(sp)) { - DoLightingMatch(LIGHT_Match(sp), !!TEST_BOOL1(sp)); + DoLightingMatch(LIGHT_Match(actor), !!TEST_BOOL1(sp)); } } } diff --git a/source/games/sw/src/light.h b/source/games/sw/src/light.h index 4f244c49a..e5b8676d5 100644 --- a/source/games/sw/src/light.h +++ b/source/games/sw/src/light.h @@ -35,7 +35,7 @@ void DoLighting(void); // Descriptive Light variables mapped from other variables -#define LIGHT_Match(sp) (SP_TAG2((sp))) +inline int LIGHT_Match(DSWActor* sp) { return SP_TAG2(sp); } #define LIGHT_Type(sp) (SP_TAG3((sp))) #define LIGHT_MaxTics(sp) (SP_TAG4((sp))) inline int8_t LIGHT_MaxBright(spritetype* sp) { return int8_t(SP_TAG5(sp)); } diff --git a/source/games/sw/src/quake.cpp b/source/games/sw/src/quake.cpp index deb7f0e9c..1e99c6f2a 100644 --- a/source/games/sw/src/quake.cpp +++ b/source/games/sw/src/quake.cpp @@ -37,7 +37,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms BEGIN_SW_NS -#define QUAKE_Match(sp) (SP_TAG2(sp)) +inline int16_t& QUAKE_Match(DSWActor* actor) { return SP_TAG2(actor); } #define QUAKE_Zamt(sp) (SP_TAG3(sp)) #define QUAKE_Radius(sp) (SP_TAG4(sp)) #define QUAKE_Duration(sp) (SP_TAG5(sp)) @@ -77,7 +77,7 @@ void DoQuakeMatch(short match) { auto sp = &actor->s(); - if (QUAKE_Match(sp) == match) + if (QUAKE_Match(actor) == match) { if ((int16_t)QUAKE_WaitTics(sp) > 0) { @@ -246,7 +246,7 @@ void SpawnQuake(sectortype* sect, int x, int y, int z, sp->cstat = 0; sp->extra = 0; - QUAKE_Match(sp) = -1; + QUAKE_Match(actorNew) = -1; QUAKE_Zamt(sp) = uint8_t(amt); QUAKE_Radius(sp) = radius/8; QUAKE_Duration(sp) = tics; diff --git a/source/games/sw/src/rotator.cpp b/source/games/sw/src/rotator.cpp index e2c8dafe9..5e0be4aa9 100644 --- a/source/games/sw/src/rotator.cpp +++ b/source/games/sw/src/rotator.cpp @@ -103,27 +103,26 @@ void SetRotatorActive(DSWActor* actor) DoRotatorSetInterp(actor); // play activate sound - DoSoundSpotMatch(SP_TAG2(sp), 1, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 1, SOUND_OBJECT_TYPE); SET(u->Flags, SPR_ACTIVE); u->Tics = 0; // moving to the OFF position if (r->tgt == 0) - VatorSwitch(SP_TAG2(sp), OFF); + VatorSwitch(SP_TAG2(actor), false); else - VatorSwitch(SP_TAG2(sp), ON); + VatorSwitch(SP_TAG2(actor), true); } void SetRotatorInactive(DSWActor* actor) { USERp u = actor->u(); - SPRITEp sp = &actor->s(); DoRotatorStopInterp(actor); // play inactivate sound - DoSoundSpotMatch(SP_TAG2(sp), 2, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 2, SOUND_OBJECT_TYPE); RESET(u->Flags, SPR_ACTIVE); } @@ -155,7 +154,7 @@ void DoRotatorMatch(PLAYERp pp, short match, bool manual) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_ROTATOR && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_ROTATOR && SP_TAG2(actor) == match) { fu = actor->u(); @@ -212,7 +211,7 @@ bool TestRotatorMatchActive(short match) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_ROTATOR && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_ROTATOR && SP_TAG2(actor) == match) { fu = actor->u(); @@ -323,7 +322,7 @@ int DoRotator(DSWActor* actor) // If ang is CLOSED then if (r->pos == 0) { - short match = SP_TAG2(sp); + short match = SP_TAG2(actor); // new tgt is OPEN (open) r->tgt = r->open_dest; diff --git a/source/games/sw/src/sector.cpp b/source/games/sw/src/sector.cpp index 6ea46a609..470abd9cf 100644 --- a/source/games/sw/src/sector.cpp +++ b/source/games/sw/src/sector.cpp @@ -1013,7 +1013,7 @@ void DoSoundSpotMatch(short match, short sound_num, short sound_type) { sp = &actor->s(); - if (SP_TAG2(sp) == match && !TEST_BOOL6(sp)) + if (SP_TAG2(actor) == match && !TEST_BOOL6(sp)) { short snd[3]; @@ -1084,7 +1084,7 @@ void DoSoundSpotStopSound(short match) auto sp = &actor->s(); // found match and is a follow type - if (SP_TAG2(sp) == match && TEST_BOOL2(sp)) + if (SP_TAG2(actor) == match && TEST_BOOL2(sp)) { DeleteNoSoundOwner(actor); } @@ -1100,7 +1100,7 @@ void DoStopSoundSpotMatch(short match) { sp = &actor->s(); - if (SP_TAG2(sp) == match) + if (SP_TAG2(actor) == match) { DoSoundSpotStopSound(SP_TAG5(sp)); } @@ -1308,7 +1308,7 @@ void DoChangorMatch(short match) auto sp = &actor->s(); auto sectp = sp->sector(); - if (SP_TAG2(sp) != match) + if (SP_TAG2(actor) != match) continue; if (TEST_BOOL1(sp)) diff --git a/source/games/sw/src/slidor.cpp b/source/games/sw/src/slidor.cpp index 10b176824..23019c0b2 100644 --- a/source/games/sw/src/slidor.cpp +++ b/source/games/sw/src/slidor.cpp @@ -99,27 +99,26 @@ void SetSlidorActive(DSWActor* actor) DoSlidorInterp(actor, StartInterpolation); // play activate sound - DoSoundSpotMatch(SP_TAG2(sp), 1, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 1, SOUND_OBJECT_TYPE); SET(u->Flags, SPR_ACTIVE); u->Tics = 0; // moving to the OFF position if (r->tgt == 0) - VatorSwitch(SP_TAG2(sp), OFF); + VatorSwitch(SP_TAG2(actor), false); else - VatorSwitch(SP_TAG2(sp), ON); + VatorSwitch(SP_TAG2(actor), true); } void SetSlidorInactive(DSWActor* actor) { USERp u = actor->u(); - SPRITEp sp = &actor->s(); DoSlidorInterp(actor, StopInterpolation); // play inactivate sound - DoSoundSpotMatch(SP_TAG2(sp), 2, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 2, SOUND_OBJECT_TYPE); RESET(u->Flags, SPR_ACTIVE); } @@ -151,7 +150,7 @@ void DoSlidorMatch(PLAYERp pp, short match, bool manual) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_SLIDOR && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_SLIDOR && SP_TAG2(actor) == match) { fu = actor->u(); @@ -205,7 +204,7 @@ bool TestSlidorMatchActive(short match) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_SLIDOR && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_SLIDOR && SP_TAG2(actor) == match) { fu = actor->u(); @@ -492,7 +491,7 @@ int DoSlidor(DSWActor* actor) // If ang is CLOSED then if (r->pos == 0) { - short match = SP_TAG2(sp); + short match = SP_TAG2(actor); // new tgt is OPEN (open) r->speed = r->orig_speed; diff --git a/source/games/sw/src/spike.cpp b/source/games/sw/src/spike.cpp index ceb2292a3..111c4bdf4 100644 --- a/source/games/sw/src/spike.cpp +++ b/source/games/sw/src/spike.cpp @@ -104,35 +104,34 @@ void SetSpikeActive(DSWActor* actor) InterpSectorSprites(sp->sector(), true); // play activate sound - DoSoundSpotMatch(SP_TAG2(sp), 1, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 1, SOUND_OBJECT_TYPE); SET(u->Flags, SPR_ACTIVE); u->Tics = 0; // moving to the ON position if (u->z_tgt == sp->pos.Z) - VatorSwitch(SP_TAG2(sp), ON); + VatorSwitch(SP_TAG2(actor), true); else // moving to the OFF position if (u->z_tgt == u->sz) - VatorSwitch(SP_TAG2(sp), OFF); + VatorSwitch(SP_TAG2(actor), false); } void SetSpikeInactive(DSWActor* actor) { USERp u = actor->u(); - SPRITEp sp = &actor->s(); - SECTORp sectp = sp->sector(); + SECTORp sectp = actor->spr.sector(); - if (TEST(sp->cstat, CSTAT_SPRITE_YFLIP)) - StopInterpolation(sp->sector(), Interp_Sect_Ceilingheinum); + if (TEST(actor->spr.cstat, CSTAT_SPRITE_YFLIP)) + StopInterpolation(sectp, Interp_Sect_Ceilingheinum); else - StopInterpolation(sp->sector(), Interp_Sect_Floorheinum); + StopInterpolation(sectp, Interp_Sect_Floorheinum); - InterpSectorSprites(sp->sector(), false); + InterpSectorSprites(sectp, false); // play activate sound - DoSoundSpotMatch(SP_TAG2(sp), 2, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 2, SOUND_OBJECT_TYPE); RESET(u->Flags, SPR_ACTIVE); } @@ -150,7 +149,7 @@ void DoSpikeOperate(sectortype* sect) if (fsp->statnum == STAT_SPIKE && SP_TAG1(actor) == SECT_SPIKE && SP_TAG3(fsp) == 0) { - match = SP_TAG2(fsp); + match = SP_TAG2(actor); if (match > 0) { if (!TestSpikeMatchActive(match)) @@ -168,24 +167,16 @@ void DoSpikeOperate(sectortype* sect) // returns first spike found void DoSpikeMatch(short match) { - USERp fu; - SPRITEp fsp; - SWStatIterator it(STAT_SPIKE); while (auto actor = it.Next()) { - fsp = &actor->s(); - - if (SP_TAG1(actor) == SECT_SPIKE && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_SPIKE && SP_TAG2(actor) == match) { - fu = actor->u(); - - if (TEST(fu->Flags, SPR_ACTIVE)) + if (actor->user.Flags & SPR_ACTIVE) { ReverseSpike(actor); continue; } - SetSpikeActive(actor); } } @@ -202,7 +193,7 @@ bool TestSpikeMatchActive(short match) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_SPIKE && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_SPIKE && SP_TAG2(actor) == match) { fu = actor->u(); @@ -334,7 +325,7 @@ int DoSpike(DSWActor* actor) // in the OFF position if (u->z_tgt == u->sz) { - short match = SP_TAG2(sp); + short match = SP_TAG2(actor); // change target u->jump_speed = u->vel_tgt; diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index 454d73405..25adb3651 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -1842,7 +1842,7 @@ void SpriteSetup(void) case SLIDE_SECTOR: sectp->u_defined = true; SET(sectp->flags, SECTFU_SLIDE_SECTOR); - sectp->speed = SP_TAG2(sp); + sectp->speed = SP_TAG2(actor); KillActor(actor); break; @@ -2659,7 +2659,7 @@ void SpriteSetup(void) case PLAX_GLOB_Z_ADJUST: { SET(sp->sector()->extra, SECTFX_Z_ADJUST); - PlaxCeilGlobZadjust = SP_TAG2(sp); + PlaxCeilGlobZadjust = SP_TAG2(actor); PlaxFloorGlobZadjust = SP_TAG3(sp); KillActor(actor); break; @@ -3614,7 +3614,7 @@ int ActorCoughItem(DSWActor* actor) SP_TAG3(np) = 68; // Match number // match - SP_TAG2(np) = -1; + SP_TAG2(actorNew) = -1; // kill RESET_BOOL1(np); SpawnItemsMatch(-1); @@ -3643,7 +3643,7 @@ int ActorCoughItem(DSWActor* actor) SP_TAG3(np) = 69; // Match number // match - SP_TAG2(np) = -1; + SP_TAG2(actorNew) = -1; // kill RESET_BOOL1(np); SpawnItemsMatch(-1); @@ -3672,7 +3672,7 @@ int ActorCoughItem(DSWActor* actor) SP_TAG3(np) = 70; // Match number // match - SP_TAG2(np) = -1; + SP_TAG2(actorNew) = -1; // kill RESET_BOOL1(np); SpawnItemsMatch(-1); @@ -3738,7 +3738,7 @@ int ActorCoughItem(DSWActor* actor) } // match - SP_TAG2(np) = -1; + SP_TAG2(actorNew) = -1; // kill RESET_BOOL1(np); SpawnItemsMatch(-1); @@ -3796,7 +3796,7 @@ int ActorCoughItem(DSWActor* actor) } // match - SP_TAG2(np) = -1; + SP_TAG2(actorNew) = -1; // kill RESET_BOOL1(np); SpawnItemsMatch(-1); @@ -3852,7 +3852,7 @@ int ActorCoughItem(DSWActor* actor) } // match - SP_TAG2(np) = -1; + SP_TAG2(actorNew) = -1; // kill RESET_BOOL1(np); SpawnItemsMatch(-1); @@ -3872,7 +3872,7 @@ int SpawnItemsMatch(short match) { sip = &itActor->s(); - if (SP_TAG2(sip) != match) + if (SP_TAG2(itActor) != match) continue; switch (SP_TAG3(sip)) diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index e99d737d5..d77dc0a12 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -1119,10 +1119,10 @@ void SetupSectorObject(sectortype* sectp, short tag) case SO_SCALE_POINT_INFO: memset(sop->scale_point_dist,0,sizeof(sop->scale_point_dist)); - sop->scale_point_base_speed = SP_TAG2(sp); + sop->scale_point_base_speed = SP_TAG2(actor); for (j = 0; j < (int)SIZ(sop->scale_point_speed); j++) { - sop->scale_point_speed[j] = SP_TAG2(sp); + sop->scale_point_speed[j] = SP_TAG2(actor); } if (SP_TAG4(sp)) @@ -1137,7 +1137,7 @@ void SetupSectorObject(sectortype* sectp, short tag) case SO_SCALE_INFO: SET(sop->flags, SOBJ_DYNAMIC); - sop->scale_speed = SP_TAG2(sp); + sop->scale_speed = SP_TAG2(actor); sop->scale_dist_min = -SP_TAG5(sp); sop->scale_dist_max = SP_TAG6(sp); @@ -1222,7 +1222,7 @@ void SetupSectorObject(sectortype* sectp, short tag) KillActor(actor); break; case SO_MAX_DAMAGE: - u->MaxHealth = SP_TAG2(sp); + u->MaxHealth = SP_TAG2(actor); if (SP_TAG5(sp) != 0) sop->max_damage = SP_TAG5(sp); else @@ -1241,7 +1241,7 @@ void SetupSectorObject(sectortype* sectp, short tag) case SO_DRIVABLE_ATTRIB: - sop->drive_angspeed = SP_TAG2(sp); + sop->drive_angspeed = SP_TAG2(actor); sop->drive_angspeed <<= 5; sop->drive_angslide = SP_TAG3(sp); if (sop->drive_angslide <= 0 || sop->drive_angslide == 32) diff --git a/source/games/sw/src/vator.cpp b/source/games/sw/src/vator.cpp index e75bb4358..b23ca5c00 100644 --- a/source/games/sw/src/vator.cpp +++ b/source/games/sw/src/vator.cpp @@ -109,18 +109,18 @@ void SetVatorActive(DSWActor* actor) InterpSectorSprites(sp->sector(), true); // play activate sound - DoSoundSpotMatch(SP_TAG2(sp), 1, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 1, SOUND_OBJECT_TYPE); SET(u->Flags, SPR_ACTIVE); u->Tics = 0; // moving to the ON position if (u->z_tgt == sp->pos.Z) - VatorSwitch(SP_TAG2(sp), ON); + VatorSwitch(SP_TAG2(actor), true); else // moving to the OFF position if (u->z_tgt == u->sz) - VatorSwitch(SP_TAG2(sp), OFF); + VatorSwitch(SP_TAG2(actor), false); } void SetVatorInactive(DSWActor* actor) @@ -137,7 +137,7 @@ void SetVatorInactive(DSWActor* actor) InterpSectorSprites(sp->sector(), false); // play inactivate sound - DoSoundSpotMatch(SP_TAG2(sp), 2, SOUND_OBJECT_TYPE); + DoSoundSpotMatch(SP_TAG2(actor), 2, SOUND_OBJECT_TYPE); RESET(u->Flags, SPR_ACTIVE); } @@ -165,7 +165,7 @@ void DoVatorOperate(PLAYERp pp, sectortype* sect) continue; } - match = SP_TAG2(fsp); + match = SP_TAG2(actor); if (match > 0) { if (!TestVatorMatchActive(match)) @@ -203,7 +203,7 @@ void DoVatorMatch(PLAYERp pp, short match) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_VATOR && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_VATOR && SP_TAG2(actor) == match) { fu = actor->u(); @@ -252,7 +252,7 @@ bool TestVatorMatchActive(short match) { fsp = &actor->s(); - if (SP_TAG1(actor) == SECT_VATOR && SP_TAG2(fsp) == match) + if (SP_TAG1(actor) == SECT_VATOR && SP_TAG2(actor) == match) { fu = actor->u(); @@ -439,7 +439,7 @@ int DoVator(DSWActor* actor) // in the OFF position if (u->z_tgt == u->sz) { - short match = SP_TAG2(sp); + short match = SP_TAG2(actor); // change target u->jump_speed = u->vel_tgt; diff --git a/source/games/sw/src/vis.cpp b/source/games/sw/src/vis.cpp index 04a88d6fc..83a704d1e 100644 --- a/source/games/sw/src/vis.cpp +++ b/source/games/sw/src/vis.cpp @@ -39,7 +39,7 @@ BEGIN_SW_NS extern short NormalVisibility; // player.c -#define VIS_VisCur(sp) (SP_TAG2(sp)) +inline int16_t& VIS_VisCur(DSWActor* actor) { return SP_TAG2(actor); } #define VIS_VisDir(sp) (SP_TAG3(sp)) #define VIS_VisGoal(sp) (SP_TAG4(sp)) @@ -55,23 +55,23 @@ void ProcessVisOn(void) if (VIS_VisDir(sp)) { // get brighter - VIS_VisCur(sp) >>= 1; - //VIS_VisCur(sp) -= 16; - if (VIS_VisCur(sp) <= VIS_VisGoal(sp)) + VIS_VisCur(actor) >>= 1; + //VIS_VisCur(actor) -= 16; + if (VIS_VisCur(actor) <= VIS_VisGoal(sp)) { - VIS_VisCur(sp) = VIS_VisGoal(sp); + VIS_VisCur(actor) = VIS_VisGoal(sp); VIS_VisDir(sp) ^= 1; } } else { // get darker - VIS_VisCur(sp) <<= 1; - VIS_VisCur(sp) += 1; - //VIS_VisCur(sp) += 16; - if (VIS_VisCur(sp) >= NormalVisibility) + VIS_VisCur(actor) <<= 1; + VIS_VisCur(actor) += 1; + //VIS_VisCur(actor) += 16; + if (VIS_VisCur(actor) >= NormalVisibility) { - VIS_VisCur(sp) = NormalVisibility; + VIS_VisCur(actor) = NormalVisibility; auto own = GetOwner(actor); if (own != nullptr) { @@ -119,8 +119,8 @@ void VisViewChange(PLAYERp pp, int *vis) // save off the brightest vis that you can see if (FAFcansee(pp->pos.X, pp->pos.Y, pp->pos.Z, pp->cursector, x, y, z, sectp)) { - if (VIS_VisCur(sp) < BrightestVis) - BrightestVis = VIS_VisCur(sp); + if (VIS_VisCur(actor) < BrightestVis) + BrightestVis = VIS_VisCur(actor); } } @@ -129,7 +129,7 @@ void VisViewChange(PLAYERp pp, int *vis) void SpawnVis(DSWActor* parentActor, sectortype* sect, int x, int y, int z, int amt) { - SPRITEp sp; + DSWActor* actorNew = nullptr; if (parentActor != nullptr) { auto psp = &parentActor->s(); @@ -151,17 +151,16 @@ void SpawnVis(DSWActor* parentActor, sectortype* sect, int x, int y, int z, int } } - auto actorNew = insertActor(psp->sector(), STAT_VIS_ON); - sp = &actorNew->s(); + actorNew = insertActor(psp->sector(), STAT_VIS_ON); SetOwner(parentActor, actorNew); ASSERT(parentActor->hasU()); SET(pu->Flags2, SPR2_CHILDREN); - sp->pos.X = psp->pos.X; - sp->pos.Y = psp->pos.Y; - sp->pos.Z = psp->pos.Z; + actorNew->spr.pos.X = psp->pos.X; + actorNew->spr.pos.Y = psp->pos.Y; + actorNew->spr.pos.Z = psp->pos.Z; SET(pu->Flags2, SPR2_VIS_SHADING); } @@ -170,20 +169,19 @@ void SpawnVis(DSWActor* parentActor, sectortype* sect, int x, int y, int z, int if (sect->floorpal == PALETTE_FOG) return; - auto actorNew = insertActor(sect, STAT_VIS_ON); - sp = &actorNew->s(); + actorNew = insertActor(sect, STAT_VIS_ON); - sp->pos.X = x; - sp->pos.Y = y; - sp->pos.Z = z - Z(20); + actorNew->spr.pos.X = x; + actorNew->spr.pos.Y = y; + actorNew->spr.pos.Z = z - Z(20); } - sp->cstat = 0; - sp->extra = 0; + actorNew->spr.cstat = 0; + actorNew->spr.extra = 0; - VIS_VisDir(sp) = 1; - VIS_VisCur(sp) = NormalVisibility; - VIS_VisGoal(sp) = amt; + VIS_VisDir(&actorNew->spr) = 1; + VIS_VisCur(actorNew) = NormalVisibility; + VIS_VisGoal(&actorNew->spr) = amt; } END_SW_NS diff --git a/source/games/sw/src/wallmove.cpp b/source/games/sw/src/wallmove.cpp index 2923fbace..e4436e1b7 100644 --- a/source/games/sw/src/wallmove.cpp +++ b/source/games/sw/src/wallmove.cpp @@ -170,7 +170,7 @@ bool CanSeeWallMove(SPRITEp wp, short match) { sp = &actor->s(); - if (SP_TAG2(sp) == match) + if (SP_TAG2(actor) == match) { found = true; @@ -192,7 +192,7 @@ int DoWallMoveMatch(short match) SWStatIterator it(STAT_WALL_MOVE); while (auto actor = it.Next()) { - if (SP_TAG2(&actor->s()) == match) + if (SP_TAG2(actor) == match) { found = true; DoWallMove(actor); diff --git a/source/games/sw/src/warp.cpp b/source/games/sw/src/warp.cpp index 7b1226045..08a4992be 100644 --- a/source/games/sw/src/warp.cpp +++ b/source/games/sw/src/warp.cpp @@ -142,7 +142,7 @@ DSWActor* WarpToArea(DSWActor* sp_from, int32_t* x, int32_t* y, int32_t* z, sect if (SP_TAG5(sp)) { short ndx = 0; - match_rand[ndx++] = SP_TAG2(sp); + match_rand[ndx++] = SP_TAG2(sp_from); match_rand[ndx++] = SP_TAG5(sp); if (SP_TAG6(sp)) match_rand[ndx++] = SP_TAG6(sp); diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index fbaaa0050..863447ef4 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -2806,8 +2806,8 @@ int DoLavaErupt(DSWActor* actor) // Counter controls the volume of lava erupting // starts out slow and increases to a max u->Counter += synctics; - if (u->Counter > SP_TAG2(sp)) - u->Counter = SP_TAG2(sp); + if (u->Counter > SP_TAG2(actor)) + u->Counter = SP_TAG2(actor); if ((RANDOM_P2(1024<<6)>>6) < u->Counter) { @@ -7463,7 +7463,7 @@ int DoExpDamageTest(DSWActor* actor) if (TEST_BOOL1(&actor->spr)) continue; - if (!CanSeeWallMove(wp, SP_TAG2(&actor->spr))) + if (!CanSeeWallMove(wp, SP_TAG2(actor))) continue; if (dist < found_dist) @@ -7475,17 +7475,16 @@ int DoExpDamageTest(DSWActor* actor) if (found_act) { - auto found_sp = &found_act->s(); - if (SP_TAG2(found_sp) == 0) + if (SP_TAG2(found_act) == 0) { // just do one DoWallMove(found_act); } else { - if (DoWallMoveMatch(SP_TAG2(found_sp))) + if (DoWallMoveMatch(SP_TAG2(found_act))) { - DoSpawnSpotsForDamage(SP_TAG2(found_sp)); + DoSpawnSpotsForDamage(SP_TAG2(found_act)); } } } @@ -16798,12 +16797,12 @@ int InitSobjGun(PLAYERp pp) if (sp->statnum == STAT_SO_SHOOT_POINT) { // match when firing - if (SP_TAG2(sp)) + if (SP_TAG2(actor)) { - DoMatchEverything(pp, SP_TAG2(sp), -1); + DoMatchEverything(pp, SP_TAG2(actor), -1); if (TEST_BOOL1(sp)) { - SP_TAG2(sp) = 0; + SP_TAG2(actor) = 0; } }