- the final doable sector[] replacements.

The rest needs to be done with the backend.
This commit is contained in:
Christoph Oelckers 2021-11-25 18:41:58 +01:00
parent e2e0f69393
commit cf6e75ad54

View file

@ -101,7 +101,7 @@ int SpawnSmokePuff(DSWActor* actor);
bool WarpToUnderwater(sectortype** sectnum, int *x, int *y, int *z); bool WarpToUnderwater(sectortype** sectnum, int *x, int *y, int *z);
bool WarpToSurface(sectortype** sectnum, int *x, int *y, int *z); bool WarpToSurface(sectortype** sectnum, int *x, int *y, int *z);
int InitElectroJump(SPRITEp wp, SPRITEp sp); int InitElectroJump(SPRITEp wp, SPRITEp sp);
bool TestDontStickSector(short hit_sect); bool TestDontStickSector(sectortype* hit_sect);
ANIMATOR SpawnShrapX; ANIMATOR SpawnShrapX;
bool WeaponMoveHit(DSWActor* actor); bool WeaponMoveHit(DSWActor* actor);
void SpawnMidSplash(DSWActor* actor); void SpawnMidSplash(DSWActor* actor);
@ -4592,7 +4592,7 @@ int DoFireballFlames(DSWActor* actor)
} }
} }
if (TestDontStickSector(sp->sectnum)) if (TestDontStickSector(sp->sector()))
{ {
KillActor(actor); KillActor(actor);
return 0; return 0;
@ -4667,7 +4667,7 @@ int DoBreakFlames(DSWActor* actor)
} }
} }
if (TestDontStickSector(sp->sectnum)) if (TestDontStickSector(sp->sector()))
{ {
KillActor(actor); KillActor(actor);
return 0; return 0;
@ -7292,7 +7292,7 @@ short StatBreakList[] =
STAT_DEAD_ACTOR, STAT_DEAD_ACTOR,
}; };
void TraverseBreakableWalls(short start_sect, int x, int y, int z, short ang, int radius) void TraverseBreakableWalls(sectortype* start_sect, int x, int y, int z, short ang, int radius)
{ {
int k; int k;
int xmid,ymid; int xmid,ymid;
@ -7309,7 +7309,7 @@ void TraverseBreakableWalls(short start_sect, int x, int y, int z, short ang, in
break_count = 0; break_count = 0;
BFSSectorSearch search(&sector[start_sect]); BFSSectorSearch search(start_sect);
while (auto sect = search.GetNext()) while (auto sect = search.GetNext())
{ {
for(auto& wal : wallsofsector(sect)) for(auto& wal : wallsofsector(sect))
@ -7330,7 +7330,7 @@ void TraverseBreakableWalls(short start_sect, int x, int y, int z, short ang, in
sectortype* sectp = nullptr; sectortype* sectp = nullptr;
if (WallBreakPosition(&wal, &sectp, &hit_x, &hit_y, &hit_z, &wall_ang)) if (WallBreakPosition(&wal, &sectp, &hit_x, &hit_y, &hit_z, &wall_ang))
{ {
if (hit_x != INT32_MAX && sectp != nullptr && FAFcansee(x, y, z, &sector[start_sect], hit_x, hit_y, hit_z, sectp)) if (hit_x != INT32_MAX && sectp != nullptr && FAFcansee(x, y, z, start_sect, hit_x, hit_y, hit_z, sectp))
{ {
HitBreakWall(&wal, INT32_MAX, INT32_MAX, INT32_MAX, ang, 0); HitBreakWall(&wal, INT32_MAX, INT32_MAX, INT32_MAX, ang, 0);
@ -7422,7 +7422,7 @@ int DoExpDamageTest(DSWActor* actor)
if (wu->ID == MUSHROOM_CLOUD) return 0; // Central Nuke doesn't break stuff if (wu->ID == MUSHROOM_CLOUD) return 0; // Central Nuke doesn't break stuff
// Only secondaries do that // Only secondaries do that
TraverseBreakableWalls(wp->sectnum, wp->x, wp->y, wp->z, wp->ang, wu->Radius); TraverseBreakableWalls(wp->sector(), wp->x, wp->y, wp->z, wp->ang, wu->Radius);
break_count = 0; break_count = 0;
max_stat = SIZ(StatBreakList); max_stat = SIZ(StatBreakList);
@ -10185,7 +10185,7 @@ void SpawnFireballFlames(DSWActor* actor, DSWActor* enemyActor)
} }
else else
{ {
if (TestDontStickSector(np->sectnum)) if (TestDontStickSector(np->sector()))
{ {
KillActor(actorNew); KillActor(actorNew);
return; return;
@ -18553,9 +18553,9 @@ bool TestDontStick(DSWActor* actor, walltype* hit_wall)
return false; return false;
} }
bool TestDontStickSector(short hit_sect) bool TestDontStickSector(sectortype* hit_sect)
{ {
if (TEST(sector[hit_sect].extra, SECTFX_DYNAMIC_AREA|SECTFX_SECTOR_OBJECT)) if (TEST(hit_sect->extra, SECTFX_DYNAMIC_AREA|SECTFX_SECTOR_OBJECT))
return true; return true;
return false; return false;
@ -18679,7 +18679,7 @@ int QueueFloorBlood(DSWActor* actor)
if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA) if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
return -1; // Not in lave either return -1; // Not in lave either
if (TestDontStickSector(hsp->sectnum)) if (TestDontStickSector(hsp->sector()))
return -1; // Not on special sectors you don't return -1; // Not on special sectors you don't
if (FloorBloodQueue[FloorBloodQueueHead] != nullptr) if (FloorBloodQueue[FloorBloodQueueHead] != nullptr)
@ -18775,7 +18775,7 @@ int QueueFootPrint(DSWActor* actor)
if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA) if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
return -1; // Not in lave either return -1; // Not in lave either
if (TestDontStickSector(hsp->sectnum)) if (TestDontStickSector(hsp->sector()))
return -1; // Not on special sectors you don't return -1; // Not on special sectors you don't
// So, are we like, done checking now!? // So, are we like, done checking now!?
@ -19081,7 +19081,7 @@ void QueueGeneric(DSWActor* actor, short pic)
return; return;
} }
if (TestDontStickSector(sp->sectnum)) if (TestDontStickSector(sp->sector()))
{ {
KillActor(actor); KillActor(actor);
return; return;
@ -19595,7 +19595,7 @@ void QueueLoWangs(DSWActor* actor)
return; return;
} }
if (TestDontStickSector(sp->sectnum)) if (TestDontStickSector(sp->sector()))
{ {
return; return;
} }