mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 11:11:16 +00:00
- QueueLoWangs
This commit is contained in:
parent
58749b2770
commit
c14fb9e93f
5 changed files with 21 additions and 26 deletions
|
@ -579,7 +579,7 @@ extern FOOT_TYPE FootMode;
|
||||||
ANIMATOR QueueFloorBlood; // Weapon.c
|
ANIMATOR QueueFloorBlood; // Weapon.c
|
||||||
int QueueFootPrint(short hit_sprite); // Weapon.c
|
int QueueFootPrint(short hit_sprite); // Weapon.c
|
||||||
int QueueGeneric(short SpriteNum, short pic); // Weapon.c
|
int QueueGeneric(short SpriteNum, short pic); // Weapon.c
|
||||||
int QueueLoWangs(short SpriteNum); // Weapon.c
|
void QueueLoWangs(DSWActor*); // Weapon.c
|
||||||
int SpawnShell(DSWActor* actor, int ShellNum); // JWeapon.c
|
int SpawnShell(DSWActor* actor, int ShellNum); // JWeapon.c
|
||||||
void UnlockKeyLock(short key_num, DSWActor* actor); // JSector.c
|
void UnlockKeyLock(short key_num, DSWActor* actor); // JSector.c
|
||||||
|
|
||||||
|
|
|
@ -5859,7 +5859,7 @@ void DoPlayerDeathCheckKeys(PLAYERp pp)
|
||||||
if (PlayerFloorHit(pp, pp->loz - PLAYER_HEIGHT))
|
if (PlayerFloorHit(pp, pp->loz - PLAYER_HEIGHT))
|
||||||
{
|
{
|
||||||
if (pp->DeathType == PLAYER_DEATH_FLIP || pp->DeathType == PLAYER_DEATH_RIPPER)
|
if (pp->DeathType == PLAYER_DEATH_FLIP || pp->DeathType == PLAYER_DEATH_RIPPER)
|
||||||
QueueLoWangs(pp->PlayerSprite);
|
QueueLoWangs(pp->Actor());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -4600,8 +4600,7 @@ int NewStateGroup(DSWActor* actor, STATEp StateGroup[])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool SpriteOverlap(int16_t spritenum_a, int16_t spritenum_b)
|
||||||
SpriteOverlap(int16_t spritenum_a, int16_t spritenum_b)
|
|
||||||
{
|
{
|
||||||
SPRITEp spa = &sprite[spritenum_a], spb = &sprite[spritenum_b];
|
SPRITEp spa = &sprite[spritenum_a], spb = &sprite[spritenum_b];
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ short FloorBloodQueue[MAX_FLOORBLOOD_QUEUE];
|
||||||
short GenericQueueHead=0;
|
short GenericQueueHead=0;
|
||||||
short GenericQueue[MAX_GENERIC_QUEUE];
|
short GenericQueue[MAX_GENERIC_QUEUE];
|
||||||
short LoWangsQueueHead=0;
|
short LoWangsQueueHead=0;
|
||||||
short LoWangsQueue[MAX_LOWANGS_QUEUE];
|
DSWActor* LoWangsQueue[MAX_LOWANGS_QUEUE];
|
||||||
int SpawnBreakStaticFlames(short);
|
int SpawnBreakStaticFlames(short);
|
||||||
|
|
||||||
bool GlobalSkipZrange = false;
|
bool GlobalSkipZrange = false;
|
||||||
|
@ -19970,8 +19970,8 @@ void SpriteQueueDelete(DSWActor* actor)
|
||||||
GenericQueue[i] = -1;
|
GenericQueue[i] = -1;
|
||||||
|
|
||||||
for (i = 0; i < MAX_LOWANGS_QUEUE; i++)
|
for (i = 0; i < MAX_LOWANGS_QUEUE; i++)
|
||||||
if (LoWangsQueue[i] == SpriteNum)
|
if (LoWangsQueue[i] == actor)
|
||||||
LoWangsQueue[i] = -1;
|
LoWangsQueue[i] = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20002,7 +20002,7 @@ void QueueReset(void)
|
||||||
GenericQueue[i] = -1;
|
GenericQueue[i] = -1;
|
||||||
|
|
||||||
for (i = 0; i < MAX_LOWANGS_QUEUE; i++)
|
for (i = 0; i < MAX_LOWANGS_QUEUE; i++)
|
||||||
LoWangsQueue[i] = -1;
|
LoWangsQueue[i] = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestDontStick(short SpriteNum, short hit_wall)
|
bool TestDontStick(short SpriteNum, short hit_wall)
|
||||||
|
@ -21102,62 +21102,58 @@ DoItemFly(int16_t SpriteNum)
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is the FAST queue, it doesn't call any animator functions or states
|
// This is the FAST queue, it doesn't call any animator functions or states
|
||||||
int QueueLoWangs(short SpriteNum)
|
void QueueLoWangs(DSWActor* actor)
|
||||||
{
|
{
|
||||||
auto actor = &swActors[SpriteNum];
|
|
||||||
SPRITEp sp = &actor->s(),ps;
|
SPRITEp sp = &actor->s(),ps;
|
||||||
USERp u;
|
USERp u;
|
||||||
short NewSprite;
|
DSWActor* NewSprite;
|
||||||
|
|
||||||
|
|
||||||
if (TEST(sector[sp->sectnum].extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
if (TEST(sector[sp->sectnum].extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
||||||
{
|
{
|
||||||
return -1;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST(sector[sp->sectnum].extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
|
if (TEST(sector[sp->sectnum].extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
|
||||||
{
|
{
|
||||||
return -1;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TestDontStickSector(sp->sectnum))
|
if (TestDontStickSector(sp->sectnum))
|
||||||
{
|
{
|
||||||
return -1;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LoWangsQueue[LoWangsQueueHead] == -1)
|
if (LoWangsQueue[LoWangsQueueHead] == nullptr)
|
||||||
{
|
{
|
||||||
LoWangsQueue[LoWangsQueueHead] = NewSprite =
|
LoWangsQueue[LoWangsQueueHead] = NewSprite =
|
||||||
SpawnSprite(STAT_GENERIC_QUEUE, sp->picnum, s_DeadLoWang, sp->sectnum,
|
SpawnActor(STAT_GENERIC_QUEUE, sp->picnum, s_DeadLoWang, sp->sectnum,
|
||||||
sp->x, sp->y, sp->z, sp->ang, 0);
|
sp->x, sp->y, sp->z, sp->ang, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// move old sprite to new sprite's place
|
// move old sprite to new sprite's place
|
||||||
setspritez(LoWangsQueue[LoWangsQueueHead], &sp->pos);
|
SetActorZ(LoWangsQueue[LoWangsQueueHead], &sp->pos);
|
||||||
NewSprite = LoWangsQueue[LoWangsQueueHead];
|
NewSprite = LoWangsQueue[LoWangsQueueHead];
|
||||||
ASSERT(sprite[NewSprite].statnum != MAXSTATUS);
|
ASSERT(NewSprite->s().statnum != MAXSTATUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Point passed in sprite to ps
|
// Point passed in sprite to ps
|
||||||
ps = sp;
|
ps = sp;
|
||||||
sp = &sprite[NewSprite];
|
sp = &NewSprite->s();
|
||||||
u = User[NewSprite].Data();
|
u = NewSprite->u();
|
||||||
ASSERT(sp);
|
ClearOwner(NewSprite);
|
||||||
sp->owner = -1;
|
|
||||||
sp->cstat = 0;
|
sp->cstat = 0;
|
||||||
sp->xrepeat = ps->xrepeat;
|
sp->xrepeat = ps->xrepeat;
|
||||||
sp->yrepeat = ps->yrepeat;
|
sp->yrepeat = ps->yrepeat;
|
||||||
sp->shade = ps->shade;
|
sp->shade = ps->shade;
|
||||||
u->spal = sp->pal = ps->pal;
|
u->spal = sp->pal = ps->pal;
|
||||||
change_actor_stat(&swActors[NewSprite],STAT_DEFAULT); // Breakable
|
change_actor_stat(NewSprite, STAT_DEFAULT); // Breakable
|
||||||
SET(sp->cstat, CSTAT_SPRITE_BREAKABLE);
|
SET(sp->cstat, CSTAT_SPRITE_BREAKABLE);
|
||||||
SET(sp->extra, SPRX_BREAKABLE);
|
SET(sp->extra, SPRX_BREAKABLE);
|
||||||
SET(sp->cstat, CSTAT_SPRITE_BLOCK_HITSCAN);
|
SET(sp->cstat, CSTAT_SPRITE_BLOCK_HITSCAN);
|
||||||
|
|
||||||
LoWangsQueueHead = (LoWangsQueueHead+1) & (MAX_LOWANGS_QUEUE-1);
|
LoWangsQueueHead = (LoWangsQueueHead+1) & (MAX_LOWANGS_QUEUE-1);
|
||||||
|
|
||||||
return SpriteNum;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ extern short FloorBloodQueue[MAX_FLOORBLOOD_QUEUE];
|
||||||
extern short GenericQueueHead;
|
extern short GenericQueueHead;
|
||||||
extern short GenericQueue[MAX_GENERIC_QUEUE];
|
extern short GenericQueue[MAX_GENERIC_QUEUE];
|
||||||
extern short LoWangsQueueHead;
|
extern short LoWangsQueueHead;
|
||||||
extern short LoWangsQueue[MAX_LOWANGS_QUEUE];
|
extern DSWActor* LoWangsQueue[MAX_LOWANGS_QUEUE];
|
||||||
|
|
||||||
void ChangeState(DSWActor* actor, STATEp statep);
|
void ChangeState(DSWActor* actor, STATEp statep);
|
||||||
void DoPlayerBeginRecoil(PLAYERp pp, short pix_amt);
|
void DoPlayerBeginRecoil(PLAYERp pp, short pix_amt);
|
||||||
|
|
Loading…
Reference in a new issue