diff --git a/source/games/sw/src/misc.h b/source/games/sw/src/misc.h index 0bfe173f8..e0593eb89 100644 --- a/source/games/sw/src/misc.h +++ b/source/games/sw/src/misc.h @@ -54,7 +54,7 @@ void TrackSetup(void); void PlaceSectorObject(SECTOR_OBJECTp sop, int newx, int newy); void PlaceSectorObjectsOnTracks(void); void PlaceActorsOnTracks(void); -void SetupSectorObject(short sectnum, short tag); +void SetupSectorObject(sectortype* sectnum, short tag); void PostSetupSectorObject(void); void VehicleSetSmoke(SECTOR_OBJECTp sop, ANIMATORp animator); void CollapseSectorObject(SECTOR_OBJECTp sop, int nx, int ny); diff --git a/source/games/sw/src/sector.cpp b/source/games/sw/src/sector.cpp index 21d626b9d..f4b0326cd 100644 --- a/source/games/sw/src/sector.cpp +++ b/source/games/sw/src/sector.cpp @@ -393,7 +393,8 @@ void SectorSetup(void) for (i = 0; i < numsectors; i++) { - tag = sector[i].lotag; + auto sectp = §or[i]; + tag = sectp->lotag; // /////////////////////////////////// // @@ -407,26 +408,26 @@ void SectorSetup(void) // // /////////////////////////////////// - if (TEST(sector[i].extra, SECTFX_SINK)) + if (TEST(sectp->extra, SECTFX_SINK)) { SectorLiquidSet(i); } - if (TEST(sector[i].floorstat, FLOOR_STAT_PLAX)) + if (TEST(sectp->floorstat, FLOOR_STAT_PLAX)) { // don't do a z adjust for FAF area - if (sector[i].floorpicnum != FAF_PLACE_MIRROR_PIC) + if (sectp->floorpicnum != FAF_PLACE_MIRROR_PIC) { - SET(sector[i].extra, SECTFX_Z_ADJUST); + SET(sectp->extra, SECTFX_Z_ADJUST); } } - if (TEST(sector[i].ceilingstat, CEILING_STAT_PLAX)) + if (TEST(sectp->ceilingstat, CEILING_STAT_PLAX)) { // don't do a z adjust for FAF area - if (sector[i].ceilingpicnum != FAF_PLACE_MIRROR_PIC) + if (sectp->ceilingpicnum != FAF_PLACE_MIRROR_PIC) { - SET(sector[i].extra, SECTFX_Z_ADJUST); + SET(sectp->extra, SECTFX_Z_ADJUST); } } @@ -438,7 +439,7 @@ void SectorSetup(void) if (tag >= TAG_OBJECT_CENTER && tag < TAG_OBJECT_CENTER + 100) { - SetupSectorObject(i, tag); + SetupSectorObject(sectp, tag); } // /////////////////////////////////// @@ -680,17 +681,6 @@ int SectorDistance(short sect1, int sect2) } -int SectorDistanceByMid(short sect1, int sect2) -{ - int sx1, sy1, sx2, sy2, trash; - - SectorMidPoint(§or[sect1], &sx1, &sy1, &trash); - SectorMidPoint(§or[sect2], &sx2, &sy2, &trash); - - // return the distance between the two sectors. - return Distance(sx1, sy1, sx2, sy2); -} - short DoSpawnActorTrigger(short match) { short spawn_count = 0; @@ -870,7 +860,7 @@ short AnimateSwitch(SPRITEp sp, short tgt_value) } -void SectorExp(DSWActor* actor, short sectnum, short orig_ang, int zh) +void SectorExp(DSWActor* actor, sectortype* sectp, short orig_ang, int zh) { SPRITEp sp = &actor->s(); USERp u = actor->u(); @@ -879,7 +869,7 @@ void SectorExp(DSWActor* actor, short sectnum, short orig_ang, int zh) int x,y,z; RESET(sp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL|CSTAT_SPRITE_ALIGNMENT_FLOOR); - SectorMidPoint(§or[sectnum], &x, &y, &z); + SectorMidPoint(sectp, &x, &y, &z); sp->ang = orig_ang; sp->x = x; sp->y = y; @@ -892,7 +882,7 @@ void SectorExp(DSWActor* actor, short sectnum, short orig_ang, int zh) sp->z = zh; // setup vars needed by SectorExp - ChangeActorSect(actor, sectnum); + ChangeActorSect(actor, sectp); getzsofslopeptr(sp->sector(), sp->x, sp->y, &u->hiz, &u->loz); // spawn explosion @@ -946,7 +936,7 @@ void DoExplodeSector(short match) for (zh = sectp->ceilingz; zh < sectp->floorz; zh += Z(60)) { - SectorExp(actor, esp->sectnum, orig_ang, zh + Z(RANDOM_P2(64)) - Z(32)); + SectorExp(actor, esp->sector(), orig_ang, zh + Z(RANDOM_P2(64)) - Z(32)); } // don't need it any more diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index d196be067..66b4161ce 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -1008,7 +1008,7 @@ cont: } -void SetupSectorObject(short sectnum, short tag) +void SetupSectorObject(sectortype* sectp, short tag) { SPRITEp sp; SECTOR_OBJECTp sop; @@ -1090,16 +1090,16 @@ void SetupSectorObject(short sectnum, short tag) { case TAG_OBJECT_CENTER - 500: - sop->mid_sector = sectnum; - SectorMidPoint(§or[sectnum], &sop->xmid, &sop->ymid, &sop->zmid); + sop->mid_sector = sectnum(sectp); + SectorMidPoint(sectp, &sop->xmid, &sop->ymid, &sop->zmid); //sop->zmid = sector[sectnum].floorz; //sop->zmid = DIV2(sector[sectnum].floorz + sector[sectnum].ceilingz); sop->dir = 1; - sop->track = sector[sectnum].hitag; + sop->track = sectp->hitag; // spawn a sprite to make it easier to integrate with sprite routines - auto actorNew = SpawnActor(STAT_SO_SP_CHILD, 0, nullptr, sectnum, + auto actorNew = SpawnActor(STAT_SO_SP_CHILD, 0, nullptr, sectp, sop->xmid, sop->ymid, sop->zmid, 0, 0); sop->sp_child = actorNew; u = actorNew->u(); @@ -1107,7 +1107,7 @@ void SetupSectorObject(short sectnum, short tag) SET(u->Flags2, SPR2_SPRITE_FAKE_BLOCK); // for damage test // check for any ST1 sprites laying on the center sector - SWSectIterator it(sectnum); + SWSectIterator it(sectp); while (auto actor = it.Next()) { SPRITEp sp = &actor->s(); @@ -1385,8 +1385,8 @@ void SetupSectorObject(short sectnum, short tag) } } - sector[sectnum].lotag = 0; - sector[sectnum].hitag = 0; + sectp->lotag = 0; + sectp->hitag = 0; if (sop->max_damage <= 0) VehicleSetSmoke(sop, SpawnVehicleSmoke);