mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-16 01:11:44 +00:00
Introduce two convenient sprite iteration macros in build.h, add a few uses.
Defines SPRITES_OF(Statnum, Iter) and SPRITES_OF_SECT(Sectnum, Iter) [The first is so that STAT_* can be substituted for Iter and it reads nicely.] Usage should be self-explanatory, but one thing to keep in mind is that the sprites that are iterated over MUST NOT be deleted. git-svn-id: https://svn.eduke32.com/eduke32@2707 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
cea07d0125
commit
5b387f7a08
3 changed files with 10 additions and 14 deletions
|
@ -76,6 +76,11 @@ extern "C" {
|
||||||
#define PR_LIGHT_PRIO_LOW 4
|
#define PR_LIGHT_PRIO_LOW 4
|
||||||
#define PR_LIGHT_PRIO_LOW_GAME 5
|
#define PR_LIGHT_PRIO_LOW_GAME 5
|
||||||
|
|
||||||
|
// Convenient sprite iterators, must not be used if any sprites are potentially deleted!
|
||||||
|
#define SPRITES_OF(Statnum, Iter) Iter=headspritestat[Statnum]; Iter>=0; Iter=nextspritestat[Iter]
|
||||||
|
#define SPRITES_OF_SECT(Sectnum, Iter) Iter=headspritesect[Sectnum]; Iter>=0; Iter=nextspritesect[Iter]
|
||||||
|
|
||||||
|
|
||||||
////////// True Room over Room (YAX == rot -17 of "PRO") //////////
|
////////// True Room over Room (YAX == rot -17 of "PRO") //////////
|
||||||
#define YAX_ENABLE
|
#define YAX_ENABLE
|
||||||
//#define YAX_DEBUG
|
//#define YAX_DEBUG
|
||||||
|
|
|
@ -5664,8 +5664,7 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p = headspritesect[s->sectnum];
|
for (SPRITES_OF_SECT(s->sectnum, p))
|
||||||
while (p >= 0)
|
|
||||||
{
|
{
|
||||||
// that hardcoded SE light behavior here should be considered temporary at best...
|
// that hardcoded SE light behavior here should be considered temporary at best...
|
||||||
// really need some more general system for handling them!
|
// really need some more general system for handling them!
|
||||||
|
@ -5674,10 +5673,7 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
|
||||||
if (sprite[p].picnum != LASERLINE)
|
if (sprite[p].picnum != LASERLINE)
|
||||||
{
|
{
|
||||||
if (sprite[p].picnum == APLAYER && sprite[p].owner >= 0)
|
if (sprite[p].picnum == APLAYER && sprite[p].owner >= 0)
|
||||||
{
|
|
||||||
p = nextspritesect[p];
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
sprite[p].ang += (l*q);
|
sprite[p].ang += (l*q);
|
||||||
sprite[p].ang &= 2047;
|
sprite[p].ang &= 2047;
|
||||||
|
@ -5691,7 +5687,6 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
|
||||||
if (move_fixed_sprite(p, j, t[2]))
|
if (move_fixed_sprite(p, j, t[2]))
|
||||||
rotatepoint(sprite[j].x,sprite[j].y,sprite[p].x,sprite[p].y,(q*l),&sprite[p].x,&sprite[p].y);
|
rotatepoint(sprite[j].x,sprite[j].y,sprite[p].x,sprite[p].y,(q*l),&sprite[p].x,&sprite[p].y);
|
||||||
}
|
}
|
||||||
p = nextspritesect[p];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7391,13 +7386,9 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
|
||||||
A_PlaySound(LIGHTNING_SLAP,i);
|
A_PlaySound(LIGHTNING_SLAP,i);
|
||||||
else if (T3 == (T2>>2))
|
else if (T3 == (T2>>2))
|
||||||
{
|
{
|
||||||
j = headspritestat[STAT_DEFAULT];
|
for (SPRITES_OF(STAT_DEFAULT, j))
|
||||||
while (j >= 0)
|
|
||||||
{
|
|
||||||
if (sprite[j].picnum == NATURALLIGHTNING && sprite[j].hitag == s->hitag)
|
if (sprite[j].picnum == NATURALLIGHTNING && sprite[j].hitag == s->hitag)
|
||||||
sprite[j].cstat |= 32768;
|
sprite[j].cstat |= 32768;
|
||||||
j = nextspritestat[j];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (T3 > (T2>>3) && T3 < (T2>>2))
|
else if (T3 > (T2>>3) && T3 < (T2>>2))
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,13 +35,14 @@ static int32_t g_haltSoundHack = 0;
|
||||||
int32_t A_CallSound(int32_t sn,int32_t whatsprite)
|
int32_t A_CallSound(int32_t sn,int32_t whatsprite)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
if (g_haltSoundHack)
|
if (g_haltSoundHack)
|
||||||
{
|
{
|
||||||
g_haltSoundHack = 0;
|
g_haltSoundHack = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
i = headspritesect[sn];
|
|
||||||
while (i >= 0)
|
for (SPRITES_OF_SECT(sn, i))
|
||||||
{
|
{
|
||||||
if (PN == MUSICANDSFX && SLT < 1000)
|
if (PN == MUSICANDSFX && SLT < 1000)
|
||||||
{
|
{
|
||||||
|
@ -73,7 +74,6 @@ int32_t A_CallSound(int32_t sn,int32_t whatsprite)
|
||||||
}
|
}
|
||||||
return SLT;
|
return SLT;
|
||||||
}
|
}
|
||||||
i = nextspritesect[i];
|
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue