mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- 10 more s().
This commit is contained in:
parent
bdf29cf01e
commit
8a1c602dc8
4 changed files with 53 additions and 77 deletions
|
@ -212,19 +212,16 @@ void JS_DrawMirrors(PLAYERp pp, int tx, int ty, int tz, fixed_t tpq16ang, fixed
|
|||
}
|
||||
else if (mirror[cnt].camspriteActor)
|
||||
{
|
||||
SPRITEp tp;
|
||||
auto pos = mirror[cnt].camspriteActor->spr.pos;
|
||||
|
||||
tp = &mirror[cnt].camspriteActor->s();
|
||||
|
||||
j = abs(tp->pos.X - tx);
|
||||
j += abs(tp->pos.Y - ty);
|
||||
j = abs(pos.X - tx);
|
||||
j += abs(pos.Y - ty);
|
||||
if (j < dist)
|
||||
dist = j;
|
||||
}
|
||||
|
||||
if (mirror[cnt].ismagic)
|
||||
{
|
||||
SPRITEp sp=nullptr;
|
||||
int camhoriz;
|
||||
int w;
|
||||
int dx, dy, dz, tdx, tdy, tdz, midx, midy;
|
||||
|
@ -232,8 +229,6 @@ void JS_DrawMirrors(PLAYERp pp, int tx, int ty, int tz, fixed_t tpq16ang, fixed
|
|||
auto actor = mirror[cnt].cameraActor;
|
||||
ASSERT(actor != nullptr);
|
||||
|
||||
sp = &actor->s();
|
||||
|
||||
// Calculate the angle of the mirror wall
|
||||
auto wal = mirror[cnt].mirrorWall;
|
||||
|
||||
|
|
|
@ -55,19 +55,17 @@ bool WarpPlaneSectorInfo(sectortype* sect, DSWActor** sp_ceiling, DSWActor** sp_
|
|||
SWStatIterator it(STAT_WARP);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
auto sp = &actor->s();
|
||||
|
||||
if (sp->sector() == sect)
|
||||
if (actor->spr.sector() == sect)
|
||||
{
|
||||
// skip - don't teleport
|
||||
if (SP_TAG10(sp) == 1)
|
||||
if (SP_TAG10(actor) == 1)
|
||||
continue;
|
||||
|
||||
if (sp->hitag == WARP_CEILING_PLANE)
|
||||
if (actor->spr.hitag == WARP_CEILING_PLANE)
|
||||
{
|
||||
*sp_ceiling = actor;
|
||||
}
|
||||
else if (sp->hitag == WARP_FLOOR_PLANE)
|
||||
else if (actor->spr.hitag == WARP_FLOOR_PLANE)
|
||||
{
|
||||
*sp_floor = actor;
|
||||
}
|
||||
|
@ -111,16 +109,15 @@ DSWActor* WarpToArea(DSWActor* sp_from, int32_t* x, int32_t* y, int32_t* z, sect
|
|||
int xoff;
|
||||
int yoff;
|
||||
int zoff;
|
||||
SPRITEp const sp = &sp_from->s();
|
||||
short match;
|
||||
short to_tag = 0;
|
||||
short match_rand[16];
|
||||
int z_adj = 0;
|
||||
|
||||
xoff = *x - sp->pos.X;
|
||||
yoff = *y - sp->pos.Y;
|
||||
zoff = *z - sp->pos.Z;
|
||||
match = sp->lotag;
|
||||
xoff = *x - sp_from->spr.pos.X;
|
||||
yoff = *y - sp_from->spr.pos.Y;
|
||||
zoff = *z - sp_from->spr.pos.Z;
|
||||
match = sp_from->spr.lotag;
|
||||
|
||||
#if 0
|
||||
TAG 2 = match
|
||||
|
@ -133,23 +130,23 @@ DSWActor* WarpToArea(DSWActor* sp_from, int32_t* x, int32_t* y, int32_t* z, sect
|
|||
|
||||
memset(match_rand,0,sizeof(match_rand));
|
||||
|
||||
switch (sp->hitag)
|
||||
switch (sp_from->spr.hitag)
|
||||
{
|
||||
case WARP_TELEPORTER:
|
||||
to_tag = WARP_TELEPORTER;
|
||||
|
||||
// if tag 5 has something this is a random teleporter
|
||||
if (SP_TAG5(sp))
|
||||
if (SP_TAG5(sp_from))
|
||||
{
|
||||
short ndx = 0;
|
||||
match_rand[ndx++] = SP_TAG2(sp_from);
|
||||
match_rand[ndx++] = SP_TAG5(sp);
|
||||
if (SP_TAG6(sp))
|
||||
match_rand[ndx++] = SP_TAG6(sp);
|
||||
if (SP_TAG7(sp))
|
||||
match_rand[ndx++] = SP_TAG7(sp);
|
||||
if (SP_TAG8(sp))
|
||||
match_rand[ndx++] = SP_TAG8(sp);
|
||||
match_rand[ndx++] = SP_TAG5(sp_from);
|
||||
if (SP_TAG6(sp_from))
|
||||
match_rand[ndx++] = SP_TAG6(sp_from);
|
||||
if (SP_TAG7(sp_from))
|
||||
match_rand[ndx++] = SP_TAG7(sp_from);
|
||||
if (SP_TAG8(sp_from))
|
||||
match_rand[ndx++] = SP_TAG8(sp_from);
|
||||
|
||||
// reset the match you are looking for
|
||||
match = match_rand[RandomRange(ndx)];
|
||||
|
@ -216,15 +213,13 @@ bool WarpSectorInfo(sectortype* sect, DSWActor** sp_warp)
|
|||
SWStatIterator it(STAT_WARP);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
auto sp = &actor->s();
|
||||
|
||||
if (sp->sector() == sect)
|
||||
if (actor->spr.sector() == sect)
|
||||
{
|
||||
// skip - don't teleport
|
||||
if (SP_TAG10(sp) == 1)
|
||||
if (SP_TAG10(actor) == 1)
|
||||
continue;
|
||||
|
||||
if (sp->hitag == WARP_TELEPORTER)
|
||||
if (actor->spr.hitag == WARP_TELEPORTER)
|
||||
{
|
||||
*sp_warp = actor;
|
||||
}
|
||||
|
|
|
@ -18159,8 +18159,6 @@ bool TestDontStickSector(sectortype* hit_sect)
|
|||
|
||||
int QueueStar(DSWActor* actor)
|
||||
{
|
||||
SPRITEp osp;
|
||||
|
||||
if (TestDontStick(actor, nullptr))
|
||||
{
|
||||
KillActor(actor);
|
||||
|
@ -18178,11 +18176,11 @@ int QueueStar(DSWActor* actor)
|
|||
else
|
||||
{
|
||||
// move old star to new stars place
|
||||
osp = &StarQueue[StarQueueHead]->s();
|
||||
osp->pos = actor->spr.pos;
|
||||
ChangeActorSect(StarQueue[StarQueueHead], actor->spr.sector());
|
||||
auto osp = StarQueue[StarQueueHead];
|
||||
osp->spr.pos = actor->spr.pos;
|
||||
ChangeActorSect(osp, actor->spr.sector());
|
||||
KillActor(actor);
|
||||
actor = StarQueue[StarQueueHead];
|
||||
actor = osp;
|
||||
}
|
||||
|
||||
StarQueueHead = (StarQueueHead+1) & (MAX_STAR_QUEUE-1);
|
||||
|
@ -18251,31 +18249,30 @@ STATE s_FloorBlood1[] =
|
|||
int QueueFloorBlood(DSWActor* actor)
|
||||
{
|
||||
USER* u = actor->u();
|
||||
SPRITEp hsp = &actor->s();
|
||||
SECTORp sectp = hsp->sector();
|
||||
SECTORp sectp = actor->spr.sector();
|
||||
DSWActor* spawnedActor = nullptr;
|
||||
|
||||
|
||||
if (TEST(sectp->extra, SECTFX_SINK)||TEST(sectp->extra, SECTFX_CURRENT))
|
||||
return -1; // No blood in water or current areas
|
||||
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(hsp) || SpriteInDiveArea(hsp))
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(actor) || SpriteInDiveArea(actor))
|
||||
return -1; // No blood underwater!
|
||||
|
||||
if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
||||
if (TEST(actor->spr.sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
||||
return -1; // No prints liquid areas!
|
||||
|
||||
if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
|
||||
if (TEST(actor->spr.sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
|
||||
return -1; // Not in lave either
|
||||
|
||||
if (TestDontStickSector(hsp->sector()))
|
||||
if (TestDontStickSector(actor->spr.sector()))
|
||||
return -1; // Not on special sectors you don't
|
||||
|
||||
if (FloorBloodQueue[FloorBloodQueueHead] != nullptr)
|
||||
KillActor(FloorBloodQueue[FloorBloodQueueHead]);
|
||||
|
||||
FloorBloodQueue[FloorBloodQueueHead] = spawnedActor =
|
||||
SpawnActor(STAT_SKIP4, FLOORBLOOD1, s_FloorBlood1, hsp->sector(), hsp->pos.X, hsp->pos.Y, hsp->pos.Z, hsp->ang, 0);
|
||||
SpawnActor(STAT_SKIP4, FLOORBLOOD1, s_FloorBlood1, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
||||
|
||||
FloorBloodQueueHead = (FloorBloodQueueHead+1) & (MAX_FLOORBLOOD_QUEUE-1);
|
||||
|
||||
|
@ -18292,7 +18289,7 @@ int QueueFloorBlood(DSWActor* actor)
|
|||
spawnedActor->spr.extra = 0;
|
||||
spawnedActor->spr.clipdist = 0;
|
||||
spawnedActor->spr.xoffset = spawnedActor->spr.yoffset = 0;
|
||||
spawnedActor->spr.pos = hsp->pos;
|
||||
spawnedActor->spr.pos = actor->spr.pos;
|
||||
spawnedActor->spr.pos.Z += Z(1);
|
||||
spawnedActor->spr.ang = RANDOM_P2(2048); // Just make it any old angle
|
||||
spawnedActor->spr.shade -= 5; // Brighten it up just a bit
|
||||
|
@ -18328,13 +18325,12 @@ STATE s_FootPrint3[] =
|
|||
|
||||
int QueueFootPrint(DSWActor* actor)
|
||||
{
|
||||
SPRITEp hsp = &actor->s();
|
||||
DSWActor* spawnedActor;
|
||||
USERp u = actor->u();
|
||||
USERp nu;
|
||||
short rnd_num=0;
|
||||
bool Found=false;
|
||||
SECTORp sectp = hsp->sector();
|
||||
SECTORp sectp = actor->spr.sector();
|
||||
|
||||
|
||||
if (TEST(sectp->extra, SECTFX_SINK)||TEST(sectp->extra, SECTFX_CURRENT))
|
||||
|
@ -18352,16 +18348,16 @@ int QueueFootPrint(DSWActor* actor)
|
|||
Found = true;
|
||||
}
|
||||
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(hsp) || Found || SpriteInDiveArea(hsp))
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(actor) || Found || SpriteInDiveArea(actor))
|
||||
return -1; // No prints underwater!
|
||||
|
||||
if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
||||
if (TEST(actor->spr.sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
||||
return -1; // No prints liquid areas!
|
||||
|
||||
if (TEST(hsp->sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
|
||||
if (TEST(actor->spr.sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_LAVA)
|
||||
return -1; // Not in lave either
|
||||
|
||||
if (TestDontStickSector(hsp->sector()))
|
||||
if (TestDontStickSector(actor->spr.sector()))
|
||||
return -1; // Not on special sectors you don't
|
||||
|
||||
// So, are we like, done checking now!?
|
||||
|
@ -18372,13 +18368,13 @@ int QueueFootPrint(DSWActor* actor)
|
|||
|
||||
if (rnd_num > 683)
|
||||
FloorBloodQueue[FloorBloodQueueHead] = spawnedActor =
|
||||
SpawnActor(STAT_WALLBLOOD_QUEUE, FOOTPRINT1, s_FootPrint1, hsp->sector(), hsp->pos.X, hsp->pos.Y, hsp->pos.Z, hsp->ang, 0);
|
||||
SpawnActor(STAT_WALLBLOOD_QUEUE, FOOTPRINT1, s_FootPrint1, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
||||
else if (rnd_num > 342)
|
||||
FloorBloodQueue[FloorBloodQueueHead] = spawnedActor =
|
||||
SpawnActor(STAT_WALLBLOOD_QUEUE, FOOTPRINT2, s_FootPrint2, hsp->sector(), hsp->pos.X, hsp->pos.Y, hsp->pos.Z, hsp->ang, 0);
|
||||
SpawnActor(STAT_WALLBLOOD_QUEUE, FOOTPRINT2, s_FootPrint2, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
||||
else
|
||||
FloorBloodQueue[FloorBloodQueueHead] = spawnedActor =
|
||||
SpawnActor(STAT_WALLBLOOD_QUEUE, FOOTPRINT3, s_FootPrint3, hsp->sector(), hsp->pos.X, hsp->pos.Y, hsp->pos.Z, hsp->ang, 0);
|
||||
SpawnActor(STAT_WALLBLOOD_QUEUE, FOOTPRINT3, s_FootPrint3, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
||||
|
||||
FloorBloodQueueHead = (FloorBloodQueueHead+1) & (MAX_FLOORBLOOD_QUEUE-1);
|
||||
|
||||
|
@ -18397,8 +18393,8 @@ int QueueFootPrint(DSWActor* actor)
|
|||
spawnedActor->spr.extra = 0;
|
||||
spawnedActor->spr.clipdist = 0;
|
||||
spawnedActor->spr.xoffset = spawnedActor->spr.yoffset = 0;
|
||||
spawnedActor->spr.pos = hsp->pos;
|
||||
spawnedActor->spr.ang = hsp->ang;
|
||||
spawnedActor->spr.pos = actor->spr.pos;
|
||||
spawnedActor->spr.ang = actor->spr.ang;
|
||||
RESET(nu->Flags, SPR_SHADOW);
|
||||
switch (FootMode)
|
||||
{
|
||||
|
@ -18455,7 +18451,6 @@ STATE s_WallBlood4[] =
|
|||
|
||||
DSWActor* QueueWallBlood(DSWActor* actor, short ang)
|
||||
{
|
||||
SPRITEp hsp = &actor->s();
|
||||
short w,nw,wall_ang,dang;
|
||||
DSWActor* spawnedActor;
|
||||
int nx,ny;
|
||||
|
@ -18465,14 +18460,14 @@ DSWActor* QueueWallBlood(DSWActor* actor, short ang)
|
|||
USERp u = actor->u();
|
||||
|
||||
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(hsp) || SpriteInDiveArea(hsp))
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(actor) || SpriteInDiveArea(actor))
|
||||
return nullptr; // No blood underwater!
|
||||
|
||||
daz = Z(RANDOM_P2(128))<<3;
|
||||
daz -= DIV2(Z(128)<<3);
|
||||
dang = (ang+(RANDOM_P2(128<<5) >> 5)) - DIV2(128);
|
||||
|
||||
FAFhitscan(hsp->pos.X, hsp->pos.Y, hsp->pos.Z - Z(30), hsp->sector(), // Start position
|
||||
FAFhitscan(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - Z(30), actor->spr.sector(), // Start position
|
||||
bcos(dang), // X vector of 3D ang
|
||||
bsin(dang), // Y vector of 3D ang
|
||||
daz, // Z vector of 3D ang
|
||||
|
@ -18482,7 +18477,7 @@ DSWActor* QueueWallBlood(DSWActor* actor, short ang)
|
|||
return nullptr;
|
||||
|
||||
const int WALLBLOOD_DIST_MAX = 2500;
|
||||
if (Distance(hit.hitpos.X, hit.hitpos.Y, hsp->pos.X, hsp->pos.Y) > WALLBLOOD_DIST_MAX)
|
||||
if (Distance(hit.hitpos.X, hit.hitpos.Y, actor->spr.pos.X, actor->spr.pos.Y) > WALLBLOOD_DIST_MAX)
|
||||
return nullptr;
|
||||
|
||||
// hit a sprite?
|
||||
|
@ -18642,7 +18637,6 @@ int DoWallBlood(DSWActor* actor)
|
|||
void QueueGeneric(DSWActor* actor, short pic)
|
||||
{
|
||||
USERp u = actor->u();
|
||||
SPRITEp osp;
|
||||
|
||||
if (TEST(actor->spr.sector()->extra, SECTFX_LIQUID_MASK) == SECTFX_LIQUID_WATER)
|
||||
{
|
||||
|
@ -18675,11 +18669,9 @@ void QueueGeneric(DSWActor* actor, short pic)
|
|||
else
|
||||
{
|
||||
// move old sprite to new sprite's place
|
||||
osp = &GenericQueue[GenericQueueHead]->s();
|
||||
osp->pos.X = actor->spr.pos.X;
|
||||
osp->pos.Y = actor->spr.pos.Y;
|
||||
osp->pos.Z = actor->spr.pos.Z;
|
||||
ChangeActorSect(GenericQueue[GenericQueueHead], actor->spr.sector());
|
||||
auto osp = GenericQueue[GenericQueueHead];
|
||||
osp->spr.pos = actor->spr.pos;
|
||||
ChangeActorSect(osp, actor->spr.sector());
|
||||
KillActor(actor);
|
||||
actor = GenericQueue[GenericQueueHead];
|
||||
ASSERT(actor->spr.statnum != MAXSTATUS);
|
||||
|
@ -18777,9 +18769,8 @@ int DoShrapVelocity(DSWActor* actor)
|
|||
SPRITEp hsp;
|
||||
|
||||
auto hit_sprite = u->coll.actor();
|
||||
hsp = &hit_sprite->s();
|
||||
|
||||
wall_ang = NORM_ANGLE(hsp->ang);
|
||||
wall_ang = NORM_ANGLE(hit_sprite->spr.ang);
|
||||
WallBounce(actor, wall_ang);
|
||||
ScaleSpriteVector(actor, 32000);
|
||||
|
||||
|
@ -19093,13 +19084,10 @@ int DoItemFly(DSWActor* actor)
|
|||
{
|
||||
short wall_ang;
|
||||
auto hit_sprite = u->coll.actor();
|
||||
SPRITEp hsp;
|
||||
|
||||
hsp = &hit_sprite->s();
|
||||
|
||||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL))
|
||||
if (TEST(hit_sprite->spr.cstat, CSTAT_SPRITE_ALIGNMENT_WALL))
|
||||
{
|
||||
wall_ang = NORM_ANGLE(hsp->ang);
|
||||
wall_ang = NORM_ANGLE(hit_sprite->spr.ang);
|
||||
WallBounce(actor, wall_ang);
|
||||
ScaleSpriteVector(actor, 32000);
|
||||
}
|
||||
|
|
|
@ -781,7 +781,6 @@ void SpawnZombie(PLAYERp pp, DSWActor* weaponActor)
|
|||
return;
|
||||
|
||||
auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursector, pp->pos.X, pp->pos.Y, pp->pos.Z, pp->angle.ang.asbuild(), 0);
|
||||
np = &actorNew->s();
|
||||
nu = actorNew->u();
|
||||
actorNew->spr.setsector(pp->cursector);
|
||||
SetOwner(actorNew, ownerActor);
|
||||
|
@ -832,7 +831,6 @@ void SpawnZombie2(DSWActor* actor)
|
|||
|
||||
|
||||
auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
||||
np = &actorNew->s();
|
||||
nu = actorNew->u();
|
||||
nu->Counter3 = 0;
|
||||
SetOwner(ownerActor, actorNew);
|
||||
|
|
Loading…
Reference in a new issue