mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 17:01:28 +00:00
- OperateSprite
This commit is contained in:
parent
1e00a4ff18
commit
98c1684c13
4 changed files with 24 additions and 29 deletions
|
@ -1346,21 +1346,21 @@ void WeaponExplodeSectorInRange(DSWActor* wActor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ShootableSwitch(short SpriteNum)
|
void ShootableSwitch(DSWActor* actor)
|
||||||
{
|
{
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
SPRITEp sp = &actor->s();
|
||||||
|
|
||||||
switch (sp->picnum)
|
switch (sp->picnum)
|
||||||
{
|
{
|
||||||
case SWITCH_SHOOTABLE_1:
|
case SWITCH_SHOOTABLE_1:
|
||||||
//RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
|
//RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
|
||||||
OperateSprite(SpriteNum, false);
|
OperateSprite(actor, false);
|
||||||
sp->picnum = SWITCH_SHOOTABLE_1 + 1;
|
sp->picnum = SWITCH_SHOOTABLE_1 + 1;
|
||||||
break;
|
break;
|
||||||
case SWITCH_FUSE:
|
case SWITCH_FUSE:
|
||||||
case SWITCH_FUSE + 1:
|
case SWITCH_FUSE + 1:
|
||||||
RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
|
RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
|
||||||
OperateSprite(SpriteNum, false);
|
OperateSprite(actor, false);
|
||||||
sp->picnum = SWITCH_FUSE + 2;
|
sp->picnum = SWITCH_FUSE + 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1563,11 +1563,10 @@ bool ComboSwitchTest(short combo_type, short match)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: switches are always wall sprites
|
// NOTE: switches are always wall sprites
|
||||||
int OperateSprite(short SpriteNum, short player_is_operating)
|
int OperateSprite(DSWActor* actor, short player_is_operating)
|
||||||
{
|
{
|
||||||
auto actor = &swActors[SpriteNum];
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
USERp u = actor->u();
|
||||||
USERp u = User[SpriteNum].Data();
|
|
||||||
PLAYERp pp = nullptr;
|
PLAYERp pp = nullptr;
|
||||||
short state;
|
short state;
|
||||||
short key_num=0;
|
short key_num=0;
|
||||||
|
@ -1598,8 +1597,6 @@ int OperateSprite(short SpriteNum, short player_is_operating)
|
||||||
case MECHANICGIRL_R0:
|
case MECHANICGIRL_R0:
|
||||||
case SAILORGIRL_R0:
|
case SAILORGIRL_R0:
|
||||||
case PRUNEGIRL_R0:
|
case PRUNEGIRL_R0:
|
||||||
//if(RandomRange(1000) < 500) return(true);
|
|
||||||
//if(u->FlagOwner == 0)
|
|
||||||
{
|
{
|
||||||
short choose_snd;
|
short choose_snd;
|
||||||
|
|
||||||
|
@ -2429,7 +2426,7 @@ void PlayerOperateEnv(PLAYERp pp)
|
||||||
{
|
{
|
||||||
if (nti[nt_ndx].spritenum >= 0 && nti[nt_ndx].dist < 1024 + 768)
|
if (nti[nt_ndx].spritenum >= 0 && nti[nt_ndx].dist < 1024 + 768)
|
||||||
{
|
{
|
||||||
if (OperateSprite(nti[nt_ndx].spritenum, true))
|
if (OperateSprite(&swActors[nti[nt_ndx].spritenum], true))
|
||||||
{
|
{
|
||||||
pp->KeyPressBits &= ~SB_OPEN;
|
pp->KeyPressBits &= ~SB_OPEN;
|
||||||
found = true;
|
found = true;
|
||||||
|
@ -2458,7 +2455,7 @@ void PlayerOperateEnv(PLAYERp pp)
|
||||||
{
|
{
|
||||||
if (nti[nt_ndx].spritenum >= 0 && nti[nt_ndx].dist < 1024 + 768)
|
if (nti[nt_ndx].spritenum >= 0 && nti[nt_ndx].dist < 1024 + 768)
|
||||||
{
|
{
|
||||||
if (OperateSprite(nti[nt_ndx].spritenum, true))
|
if (OperateSprite(&swActors[nti[nt_ndx].spritenum], true))
|
||||||
{
|
{
|
||||||
pp->KeyPressBits &= ~SB_OPEN;
|
pp->KeyPressBits &= ~SB_OPEN;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -41,7 +41,7 @@ short Switch(short SwitchSector);
|
||||||
void PlayerOperateEnv(PLAYERp pp);
|
void PlayerOperateEnv(PLAYERp pp);
|
||||||
int TeleportToSector(PLAYERp pp, int newsector);
|
int TeleportToSector(PLAYERp pp, int newsector);
|
||||||
int OperateSector(short sectnum,short player_is_operating);
|
int OperateSector(short sectnum,short player_is_operating);
|
||||||
int OperateSprite(short SpriteNum, short player_is_operating);
|
int OperateSprite(DSWActor*, short player_is_operating);
|
||||||
int OperateWall(short wallnum, short player_is_operating);
|
int OperateWall(short wallnum, short player_is_operating);
|
||||||
void OperateTripTrigger(PLAYERp pp);
|
void OperateTripTrigger(PLAYERp pp);
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ bool ComboSwitchTest(short combo_type,short match);
|
||||||
void DoSoundSpotStopSound(short match);
|
void DoSoundSpotStopSound(short match);
|
||||||
void DoSector(void);
|
void DoSector(void);
|
||||||
short AnimateSwitch(SPRITEp sp,short tgt_value);
|
short AnimateSwitch(SPRITEp sp,short tgt_value);
|
||||||
void ShootableSwitch(short SpriteNum);
|
void ShootableSwitch(DSWActor*);
|
||||||
bool TestKillSectorObject(SECTOR_OBJECTp sop);
|
bool TestKillSectorObject(SECTOR_OBJECTp sop);
|
||||||
void WeaponExplodeSectorInRange(DSWActor*);
|
void WeaponExplodeSectorInRange(DSWActor*);
|
||||||
|
|
||||||
|
|
|
@ -3330,14 +3330,11 @@ ActorTrackDecide(TRACK_POINTp tpoint, short SpriteNum)
|
||||||
{
|
{
|
||||||
neartag(sp->x, sp->y, z[i], sp->sectnum, sp->ang,
|
neartag(sp->x, sp->y, z[i], sp->sectnum, sp->ang,
|
||||||
&nearsector, &nearwall, &nearsprite,
|
&nearsector, &nearwall, &nearsprite,
|
||||||
&nearhitdist, 1024L, NTAG_SEARCH_LO_HI, nullptr);
|
&nearhitdist, 1024, NTAG_SEARCH_LO_HI, nullptr);
|
||||||
|
|
||||||
// //DSPRINTF(ds,"nearsector = %d, nearwall = %d, nearsprite = %d hitdist == %ld\n",nearsector,nearwall,nearsprite,nearhitdist);
|
|
||||||
// MONO_PRINT(ds);
|
|
||||||
|
|
||||||
if (nearsprite >= 0 && nearhitdist < 1024)
|
if (nearsprite >= 0 && nearhitdist < 1024)
|
||||||
{
|
{
|
||||||
if (OperateSprite(nearsprite, false))
|
if (OperateSprite(&swActors[nearsprite], false))
|
||||||
{
|
{
|
||||||
if (!tpoint->tag_high)
|
if (!tpoint->tag_high)
|
||||||
u->WaitTics = 2 * 120;
|
u->WaitTics = 2 * 120;
|
||||||
|
|
|
@ -4512,6 +4512,7 @@ WeaponMoveHit(short SpriteNum)
|
||||||
short hit_sprite;
|
short hit_sprite;
|
||||||
|
|
||||||
hit_sprite = NORM_SPRITE(u->ret);
|
hit_sprite = NORM_SPRITE(u->ret);
|
||||||
|
auto hitActor = &swActors[hit_sprite];
|
||||||
hsp = &sprite[hit_sprite];
|
hsp = &sprite[hit_sprite];
|
||||||
hu = User[hit_sprite].Data();
|
hu = User[hit_sprite].Data();
|
||||||
|
|
||||||
|
@ -4579,7 +4580,7 @@ WeaponMoveHit(short SpriteNum)
|
||||||
{
|
{
|
||||||
if (hsp->lotag || hsp->hitag)
|
if (hsp->lotag || hsp->hitag)
|
||||||
{
|
{
|
||||||
ShootableSwitch(hit_sprite);
|
ShootableSwitch(hitActor);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4640,7 +4641,7 @@ WeaponMoveHit(short SpriteNum)
|
||||||
{
|
{
|
||||||
if (hsp->lotag || hsp->hitag)
|
if (hsp->lotag || hsp->hitag)
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13415,7 +13416,7 @@ InitSwordAttack(PLAYERp pp)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13606,7 +13607,7 @@ InitFistAttack(PLAYERp pp)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (hsp->picnum)
|
switch (hsp->picnum)
|
||||||
|
@ -14503,7 +14504,7 @@ int ContinueHitscan(PLAYERp pp, short sectnum, int x, int y, int z, short ang, i
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14677,7 +14678,7 @@ InitShotgun(PLAYERp pp)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17524,7 +17525,7 @@ InitUzi(PLAYERp pp)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17702,7 +17703,7 @@ InitEMP(PLAYERp pp)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST(hsp->extra, SPRX_PLAYER_OR_ENEMY))
|
if (TEST(hsp->extra, SPRX_PLAYER_OR_ENEMY))
|
||||||
|
@ -18213,7 +18214,7 @@ InitSobjMachineGun(short SpriteNum, PLAYERp pp)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18648,7 +18649,7 @@ InitTurretMgun(SECTOR_OBJECTp sop)
|
||||||
// hit a switch?
|
// hit a switch?
|
||||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL) && (hsp->lotag || hsp->hitag))
|
||||||
{
|
{
|
||||||
ShootableSwitch(hitinfo.sprite);
|
ShootableSwitch(&swActors[hitinfo.sprite]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue