- several s().

This commit is contained in:
Christoph Oelckers 2021-12-24 20:55:10 +01:00
parent 1e938e2b44
commit 9ad23631f5
10 changed files with 66 additions and 87 deletions

View file

@ -587,12 +587,11 @@ int AutoBreakWall(WALLp wallp, int hit_x, int hit_y, int hit_z, int ang, int typ
vec3_t hit_pos = { hit_x, hit_y, hit_z };
// need correct location for spawning shrap
auto breakActor = insertActor(0, STAT_DEFAULT);
auto bsp = &breakActor->s();
bsp->cstat = 0;
bsp->extra = 0;
bsp->ang = ang;
bsp->picnum = ST1;
bsp->xrepeat = bsp->yrepeat = 64;
breakActor->spr.cstat = 0;
breakActor->spr.extra = 0;
breakActor->spr.ang = ang;
breakActor->spr.picnum = ST1;
breakActor->spr.xrepeat = breakActor->spr.yrepeat = 64;
SetActorZ(breakActor, &hit_pos);
SpawnShrap(breakActor, nullptr, -1, break_info);
KillActor(breakActor);

View file

@ -351,113 +351,112 @@ void PreCacheActor(void)
SWSpriteIterator it;
while (auto actor = it.Next())
{
auto pUsr = actor->u();
auto pSpr = &actor->s();
if (pSpr->statnum >= MAXSTATUS)
int pal = actor->spr.pal;
if (actor->spr.statnum >= MAXSTATUS)
continue;
if (pUsr)
pic = pUsr->ID;
if (actor->hasU())
pic = actor->user.ID;
else
pic = pSpr->picnum;
pic = actor->spr.picnum;
switch (pic)
{
case COOLIE_RUN_R0:
PreCacheCoolie(pSpr->pal);
PreCacheCoolie(pal);
break;
case NINJA_RUN_R0:
case NINJA_CRAWL_R0:
PreCacheNinja(pSpr->pal);
PreCacheNinja(pal);
break;
case GORO_RUN_R0:
PreCacheGuardian(pSpr->pal);
PreCacheGuardian(pal);
break;
case 1441:
case COOLG_RUN_R0:
PreCacheGhost(pSpr->pal);
PreCacheGhost(pal);
break;
case EEL_RUN_R0:
PreCacheEel(pSpr->pal);
PreCacheEel(pal);
break;
case SUMO_RUN_R0:
PreCacheZilla(pSpr->pal);
PreCacheZilla(pal);
break;
case ZILLA_RUN_R0:
PreCacheSumo(pSpr->pal);
PreCacheSumo(pal);
break;
case TOILETGIRL_R0:
PreCacheToiletGirl(pSpr->pal);
PreCacheToiletGirl(pal);
break;
case WASHGIRL_R0:
PreCacheWashGirl(pSpr->pal);
PreCacheWashGirl(pal);
break;
case CARGIRL_R0:
PreCacheCarGirl(pSpr->pal);
PreCacheCarGirl(pal);
break;
case MECHANICGIRL_R0:
PreCacheMechanicGirl(pSpr->pal);
PreCacheMechanicGirl(pal);
break;
case SAILORGIRL_R0:
PreCacheSailorGirl(pSpr->pal);
PreCacheSailorGirl(pal);
break;
case PRUNEGIRL_R0:
PreCachePruneGirl(pSpr->pal);
PreCachePruneGirl(pal);
break;
case TRASHCAN:
PreCacheTrash(pSpr->pal);
PreCacheTrash(pal);
break;
case BUNNY_RUN_R0:
PreCacheBunny(pSpr->pal);
PreCacheBunny(pal);
break;
case RIPPER_RUN_R0:
PreCacheRipper(pSpr->pal);
PreCacheRipper(pal);
break;
case RIPPER2_RUN_R0:
PreCacheRipper2(pSpr->pal);
PreCacheRipper2(pal);
break;
case SERP_RUN_R0:
PreCacheSerpent(pSpr->pal);
PreCacheSerpent(pal);
break;
case LAVA_RUN_R0:
break;
case SKEL_RUN_R0:
PreCacheSkel(pSpr->pal);
PreCacheSkel(pal);
break;
case HORNET_RUN_R0:
PreCacheHornet(pSpr->pal);
PreCacheHornet(pal);
break;
case SKULL_R0:
PreCacheSkull(pSpr->pal);
PreCacheSkull(pal);
break;
case BETTY_R0:
PreCacheBetty(pSpr->pal);
PreCacheBetty(pal);
break;
case GIRLNINJA_RUN_R0:
PreCacheNinjaGirl(pSpr->pal);
PreCacheNinjaGirl(pal);
break;
case 623: // Pachinko win light
@ -465,11 +464,11 @@ void PreCacheActor(void)
case PACHINKO2:
case PACHINKO3:
case PACHINKO4:
PreCachePachinko(pSpr->pal);
PreCachePachinko(pal);
break;
default:
markTileForPrecache(pic, pSpr->pal);
markTileForPrecache(pic, pal);
}
}
}

View file

@ -453,8 +453,7 @@ int DoBloodSpray(DSWActor* actor)
}
else
{
auto bsp = &bldActor->s();
if (FAF_Sector(bsp->sector()) || FAF_ConnectArea(bsp->sector()))
if (FAF_Sector(bldActor->spr.sector()) || FAF_ConnectArea(bldActor->spr.sector()))
{
KillActor(actor);
return 0;
@ -462,8 +461,8 @@ int DoBloodSpray(DSWActor* actor)
actor->spr.xvel = actor->spr.yvel = u->xchange = u->ychange = 0;
actor->spr.xrepeat = actor->spr.yrepeat = 70 - RandomRange(25);
actor->spr.pos.X = bsp->pos.X;
actor->spr.pos.Y = bsp->pos.Y;
actor->spr.pos.X = bldActor->spr.pos.X;
actor->spr.pos.Y = bldActor->spr.pos.Y;
// !FRANK! bit of a hack
// yvel is the hit_wall

View file

@ -2358,7 +2358,6 @@ void InitPlayerSprite(PLAYERp pp)
pp->pos.Y, pp->pos.Z, pp->angle.ang.asbuild(), 0);
pp->actor = actor;
sp = &actor->s();
pp->pnum = pnum;
SET(actor->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);

View file

@ -521,17 +521,15 @@ int DoSlidor(DSWActor* actor)
// if heading for the OFF (original) position and should NOT CRUSH
if (TEST_BOOL3(sp) && r->tgt == 0)
{
SPRITEp bsp;
USERp bu;
bool found = false;
SWSectIterator it(sp->sector());
while (auto itActor = it.Next())
{
bsp = &itActor->s();
bu = itActor->u();
if (bu && TEST(bsp->cstat, CSTAT_SPRITE_BLOCK) && TEST(bsp->extra, SPRX_PLAYER_OR_ENEMY))
if (bu && TEST(itActor->spr.cstat, CSTAT_SPRITE_BLOCK) && TEST(itActor->spr.extra, SPRX_PLAYER_OR_ENEMY))
{
// found something blocking so reverse to ON position
ReverseSlidor(actor);

View file

@ -365,17 +365,15 @@ int DoSpike(DSWActor* actor)
// if heading for the OFF (original) position and should NOT CRUSH
if (TEST_BOOL3(sp) && u->z_tgt == u->oz)
{
SPRITEp bsp;
USERp bu;
bool found = false;
SWSectIterator it(actor->spr.sector());
while (auto itActor = it.Next())
{
bsp = &actor->s();
bu = actor->u();
if (bu && TEST(bsp->cstat, CSTAT_SPRITE_BLOCK) && TEST(bsp->extra, SPRX_PLAYER_OR_ENEMY))
if (bu && TEST(actor->spr.cstat, CSTAT_SPRITE_BLOCK) && TEST(actor->spr.extra, SPRX_PLAYER_OR_ENEMY))
{
ReverseSpike(actor);
found = true;

View file

@ -481,19 +481,17 @@ int DoVator(DSWActor* actor)
if (TEST_BOOL3(sp) && u->z_tgt == u->oz)
{
int i;
SPRITEp bsp;
USERp bu;
bool found = false;
SWSectIterator it(sp->sector());
while (auto itActor = it.Next())
{
bsp = &itActor->s();
bu = itActor->u();
if (bsp->statnum == STAT_ENEMY)
if (itActor->spr.statnum == STAT_ENEMY)
{
if (labs(sectp->ceilingz - sectp->floorz) < GetSpriteSizeZ(bsp))
if (labs(sectp->ceilingz - sectp->floorz) < ActorSizeZ(itActor))
{
InitBloodSpray(itActor, true, -1);
UpdateSinglePlayKills(itActor);
@ -502,7 +500,7 @@ int DoVator(DSWActor* actor)
}
}
if (bu && TEST(bsp->cstat, CSTAT_SPRITE_BLOCK) && TEST(bsp->extra, SPRX_PLAYER_OR_ENEMY))
if (bu && TEST(itActor->spr.cstat, CSTAT_SPRITE_BLOCK) && TEST(itActor->spr.extra, SPRX_PLAYER_OR_ENEMY))
{
// found something blocking so reverse to ON position
ReverseVator(actor);
@ -534,16 +532,12 @@ int DoVator(DSWActor* actor)
}
else
{
SPRITEp bsp;
SWSectIterator it(sp->sector());
while (auto itActor = it.Next())
{
bsp = &itActor->s();
if (bsp->statnum == STAT_ENEMY)
if (itActor->spr.statnum == STAT_ENEMY)
{
if (labs(sectp->ceilingz - sectp->floorz) < GetSpriteSizeZ(bsp))
if (labs(sectp->ceilingz - sectp->floorz) < ActorSizeZ(itActor))
{
InitBloodSpray(itActor, true, -1);
UpdateSinglePlayKills(itActor);

View file

@ -86,15 +86,13 @@ int DoWallMove(DSWActor* actor)
short dang;
bool SOsprite = false;
auto sp = &actor->s();
dist = SP_TAG13(actor);
ang = SP_TAG4(sp);
picnum1 = SP_TAG5(sp);
picnum2 = SP_TAG6(sp);
shade1 = SP_TAG7(sp);
shade2 = SP_TAG8(sp);
dang = ((int)SP_TAG10(sp)) << 3;
ang = SP_TAG4(actor);
picnum1 = SP_TAG5(actor);
picnum2 = SP_TAG6(actor);
shade1 = SP_TAG7(actor);
shade2 = SP_TAG8(actor);
dang = ((int)SP_TAG10(actor)) << 3;
if (dang)
ang = NORM_ANGLE(ang + (RandomRange(dang) - dang/2));
@ -104,7 +102,7 @@ int DoWallMove(DSWActor* actor)
for(auto& wal : wall)
{
if (wal.pos.X == sp->pos.X && wal.pos.Y == sp->pos.Y)
if (wal.pos.X == actor->spr.pos.X && wal.pos.Y == actor->spr.pos.Y)
{
found = true;
@ -119,7 +117,7 @@ int DoWallMove(DSWActor* actor)
}
else
{
wal.move(sp->pos.X + nx, sp->pos.Y + ny);
wal.move(actor->spr.pos.X + nx, actor->spr.pos.Y + ny);
}
if (shade1)
@ -136,8 +134,8 @@ int DoWallMove(DSWActor* actor)
}
}
SP_TAG9(sp)--;
if ((int8_t)SP_TAG9(sp) <= 0)
SP_TAG9(actor)--;
if ((int8_t)SP_TAG9(actor) <= 0)
{
KillActor(actor);
}
@ -151,8 +149,8 @@ int DoWallMove(DSWActor* actor)
}
else
{
sp->pos.X += nx;
sp->pos.Y += ny;
actor->spr.pos.X += nx;
actor->spr.pos.Y += ny;
}
}
@ -163,18 +161,15 @@ bool CanSeeWallMove(DSWActor* caller, int match)
{
int i;
bool found = false;
SPRITEp sp;
SWStatIterator it(STAT_WALL_MOVE_CANSEE);
while (auto actor = it.Next())
{
sp = &actor->s();
if (SP_TAG2(actor) == match)
{
found = true;
if (cansee(caller->spr.pos.X, caller->spr.pos.Y, caller->spr.pos.Z, caller->spr.sector(), sp->pos.X, sp->pos.Y, sp->pos.Z, sp->sector()))
if (cansee(caller->spr.pos.X, caller->spr.pos.Y, caller->spr.pos.Z, caller->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector()))
{
return true;
}

View file

@ -167,26 +167,24 @@ DSWActor* WarpToArea(DSWActor* sp_from, int32_t* x, int32_t* y, int32_t* z, sect
SWStatIterator it(STAT_WARP);
while (auto actor = it.Next())
{
auto spi = &actor->s();
if (spi->lotag == match && actor != sp_from)
if (actor->spr.lotag == match && actor != sp_from)
{
// exp: WARP_CEILING or WARP_CEILING_PLANE
if (spi->hitag == to_tag)
if (actor->spr.hitag == to_tag)
{
if (!spi->insector())
if (!actor->spr.insector())
return nullptr;
// determine new x,y,z position
*x = spi->pos.X + xoff;
*y = spi->pos.Y + yoff;
*z = spi->pos.Z + zoff;
*x = actor->spr.pos.X + xoff;
*y = actor->spr.pos.Y + yoff;
*z = actor->spr.pos.Z + zoff;
// make sure you warp outside of warp plane
*z += z_adj;
// get new sector
*sect = spi->sector();
*sect = actor->spr.sector();
updatesector(*x, *y, sect);
return actor;

View file

@ -12423,7 +12423,7 @@ int InitSwordAttack(PLAYERp pp)
int InitFistAttack(PLAYERp pp)
{
auto plActor = pp->actor;
DSWActor* plActor = pp->actor;
USERp u = plActor->u(),tu;
auto psp = &plActor->s();
unsigned stat;