- replaced all simple sector iterators.

This commit is contained in:
Christoph Oelckers 2021-11-13 20:41:47 +01:00
parent d63f5046ec
commit 0bd0477352
5 changed files with 32 additions and 26 deletions

View file

@ -245,10 +245,12 @@ void aiProcess() {
else {
spr.z = zr_florz;
}
short j = headspritesect[spr.sectnum];
while (j != -1) {
short nextj = nextspritesect[j];
SPRITE& tspr = sprite[j];
WHSectIterator it(spr.sectnum);
while (auto actor = it.Next())
{
SPRITE& tspr = actor->s();
int j = actor->GetSpriteIndex();
if (tspr.picnum == PATROLPOINT) {
int dx = abs(spr.x - tspr.x); // x distance to sprite
int dy = abs(spr.y - tspr.y); // y distance to sprite
@ -258,7 +260,6 @@ void aiProcess() {
spr.ang = tspr.ang;
}
}
j = nextj;
}
if (bcos(spr.ang) * (plr.x - spr.x) + bsin(spr.ang) * (plr.y - spr.y) >= 0) {
if (cansee(plr.x, plr.y, plr.z, plr.sector, spr.x, spr.y, spr.z - (tileHeight(spr.picnum) << 7),

View file

@ -508,10 +508,12 @@ void goblinWarProcess(PLAYER& plr)
static void checkexplgoblin(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
short nextj = nextspritesect[j];
auto& spri = sprite[j];
WHSectIterator it(spr.sectnum);
while (auto actor = it.Next())
{
SPRITE& spri = actor->s();
int j = actor->GetSpriteIndex();
int dx = abs(spr.x - spri.x); // x distance to sprite
int dy = abs(spr.y - spri.y); // y distance to sprite
int dz = abs((spr.z >> 8) - (spri.z >> 8)); // z distance to sprite
@ -526,7 +528,6 @@ static void checkexplgoblin(PLAYER& plr, short i) {
}
}
}
j = nextj;
}
}

View file

@ -409,10 +409,12 @@ static void diegron(PLAYER& plr, short i) {
static void checkexplgron(PLAYER& plr, short i) {
SPRITE& spr = sprite[i];
short j = headspritesect[spr.sectnum];
while (j != -1) {
short nextj = nextspritesect[j];
auto& spri = sprite[j];
WHSectIterator it(spr.sectnum);
while (auto actor = it.Next())
{
SPRITE& spri = actor->s();
int j = actor->GetSpriteIndex();
int dx = abs(spr.x - spri.x); // x distance to sprite
int dy = abs(spr.y - spri.y); // y distance to sprite
int dz = abs((spr.z >> 8) - (spri.z >> 8)); // z distance to sprite
@ -426,7 +428,6 @@ static void checkexplgron(PLAYER& plr, short i) {
}
}
}
j = nextj;
}
}

View file

@ -1370,10 +1370,12 @@ void animateobjs(PLAYER& plr) {
spr.lotag = 12;
}
j = headspritesect[spr.sectnum];
while (j != -1) {
short nextj = nextspritesect[j];
SPRITE tspr = sprite[j];
WHSectIterator it(spr.sectnum);
while (auto actor = it.Next())
{
SPRITE& tspr = actor->s();
int j = actor->GetSpriteIndex();
int dx = abs(spr.x - tspr.x); // x distance to sprite
int dy = abs(spr.y - tspr.y); // y distance to sprite
int dz = abs((spr.z >> 8) - (tspr.z >> 8)); // z distance to sprite
@ -1400,7 +1402,6 @@ void animateobjs(PLAYER& plr) {
}
}
}
j = nextj;
}
if (spr.picnum == EXPLOEND) {

View file

@ -1063,15 +1063,17 @@ void weaponpowerup(PLAYER& plr) {
if (sector[plr.sector].hitag > 0) {
sector[plr.sector].hitag--;
if (sector[plr.sector].hitag == 0) {
short j = headspritesect[plr.sector];
while (j != -1) {
short nextj = nextspritesect[j];
if (sprite[j].picnum == CONE) {
WHSectIterator it(plr.sector);
while (auto actor = it.Next())
{
SPRITE& tspr = actor->s();
int j = actor->GetSpriteIndex();
if (tspr.picnum == CONE) {
deletesprite(j);
} else if (sprite[j].picnum == SPARKBALL) {
} else if (tspr.picnum == SPARKBALL) {
deletesprite(j);
}
j = nextj;
}
}
}