- put more access to user.change behind wrappers

This commit is contained in:
Christoph Oelckers 2022-08-31 00:41:50 +02:00
parent f81aada041
commit 10e08556c1
4 changed files with 53 additions and 93 deletions

View file

@ -1272,8 +1272,7 @@ int PlayerInitChemBomb(PLAYER* pp)
plActor->spr.clipdist = uint8_t(oclipdist);
actorNew->spr.clipdist = 80L >> 2;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel >> 1;
UpdateChange(actorNew, 0.5);
// adjust xvel according to player velocity
actorNew->user.change.X += pp->vect.X >> 14;
@ -1312,8 +1311,7 @@ int InitSpriteChemBomb(DSWActor* actor)
actorNew->spr.clipdist = 80L >> 2;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel >> 1;
UpdateChange(actorNew, 0.5);
// Smoke will come out for this many seconds
actorNew->user.WaitTics = CHEMTICS;
@ -1357,8 +1355,7 @@ int InitChemBomb(DSWActor* actor)
}
else
{
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel >> 1;
UpdateChange(actorNew, 0.5);
// Smoke will come out for this many seconds
actorNew->user.WaitTics = 3*120;
}
@ -1626,8 +1623,7 @@ int PlayerInitCaltrops(PLAYER* pp)
plActor->spr.clipdist = uint8_t(oclipdist);
actorNew->spr.clipdist = 80L >> 2;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel >> 1;
UpdateChange(actorNew, 0.5);
// adjust xvel according to player velocity
actorNew->user.change.X += pp->vect.X >> 14;
@ -1664,8 +1660,7 @@ int InitCaltrops(DSWActor* actor)
// spawnedActor->spr.clipdist = 80L>>2;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel >> 1;
UpdateChange(actorNew, 0.5);
SetupSpriteForBreak(actorNew); // Put Caltrops in the break queue
return 0;
@ -1703,8 +1698,7 @@ int InitPhosphorus(DSWActor* actor)
actorNew->spr.zvel = short(-RandomRange(100) * HORIZ_MULT);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = (actorNew->spr.zvel >> 1);
UpdateChange(actorNew, 0.5);
return 0;
}
@ -1769,8 +1763,7 @@ int InitBloodSpray(DSWActor* actor, bool dogib, short velocity)
actorNew->spr.zvel = short((-10 - RandomRange(50)) * HORIZ_MULT);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel >> 1;
UpdateChange(actorNew, 0.5);
if (!GlobalSkipZrange)
DoActorZrange(actorNew);
@ -2183,8 +2176,7 @@ int SpawnShell(DSWActor* actor, int ShellNum)
actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
actorNew->user.Flags &= ~(SPR_BOUNCE|SPR_UNDERWATER); // Make em' bounce
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
actorNew->user.jump_speed = 200;
actorNew->user.jump_speed += RandomRange(400);

View file

@ -3497,8 +3497,7 @@ void SetupItemForJump(DSWActor* spawner, DSWActor* actor)
actor->spr.xvel = (int)SP_TAG7(spawner)<<2;
actor->spr.zvel = -(((int)SP_TAG8(spawner))<<5);
UpdateChangeXY(actor);
actor->user.change.Z = actor->spr.zvel;
UpdateChange(actor);
}
}

View file

@ -42,6 +42,12 @@ inline void UpdateChangeXY(DSWActor* actor)
actor->user.change.Y = MOVEy(actor->spr.xvel, actor->int_ang());
}
inline void UpdateChange(DSWActor* actor, double zfactor = 1.0)
{
UpdateChangeXY(actor);
actor->user.change.Z = int(actor->spr.zvel * zfactor);
}
// subclassed to add a game specific actor() method

View file

@ -7714,8 +7714,7 @@ int MissileSeek(DSWActor* actor, int16_t delay_tics, int16_t aware_range/*, int1
actor->spr.zvel = delta_ang;
UpdateChangeXY(actor);
actor->user.change.Z = actor->spr.zvel;
UpdateChange(actor);
}
return 0;
}
@ -9398,8 +9397,7 @@ int SpawnExtraMicroMini(DSWActor* actor)
actorNew->spr.zvel = actor->spr.zvel;
actorNew->spr.zvel += RandomRange(Z(16)) - Z(8);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
return 0;
}
@ -10985,8 +10983,7 @@ int DoMirv(DSWActor* actor)
actorNew->user.Dist = 200;
//actorNew->user.Dist = 0;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (actor->user.Flags & (SPR_UNDERWATER))
actorNew->user.Flags |= (SPR_UNDERWATER);
@ -11023,8 +11020,7 @@ bool MissileSetPos(DSWActor* actor, ANIMATOR* DoWeapon, int dist)
actor->spr.zvel = short((actor->spr.zvel*6) / MISSILEMOVETICS);
// some Weapon Animators use this
UpdateChangeXY(actor);
actor->user.change.Z = actor->spr.zvel;
UpdateChange(actor);
actor->user.Flags |= (SPR_SET_POS_DONT_KILL);
if ((*DoWeapon)(actor))
@ -11367,8 +11363,7 @@ int InitLavaThrow(DSWActor* actor)
actorNew->user.ceiling_dist = (14);
actorNew->user.floor_dist = (14);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoLavaBoulder, 1200);
@ -11574,8 +11569,7 @@ void InitSpellNapalm(PLAYER* pp)
actor->set_int_ang(NORM_ANGLE(actor->int_ang() - mp[i].ang));
}
UpdateChangeXY(actor);
actor->user.change.Z = actor->spr.zvel;
UpdateChange(actor);
if (MissileSetPos(actor, DoNapalm, mp[i].dist_out))
{
@ -11652,8 +11646,7 @@ int InitEnemyNapalm(DSWActor* actor)
if (dist != 0)
actorNew->spr.zvel = (actorNew->spr.xvel * (int_ActorUpperZ(actor->user.targetActor) - actorNew->int_pos().Z)) / dist;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoNapalm, mp[i].dist_out);
@ -11693,8 +11686,7 @@ int InitSpellMirv(PLAYER* pp)
auto oclipdist = plActor->spr.clipdist;
plActor->spr.clipdist = 0;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoMirv, 600);
plActor->spr.clipdist = oclipdist;
@ -11727,8 +11719,7 @@ int InitEnemyMirv(DSWActor* actor)
actorNew->user.ceiling_dist = (16);
actorNew->user.Dist = 200;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoMirv, 600);
@ -12168,8 +12159,7 @@ int InitSumoNapalm(DSWActor* actor)
if (dist != 0)
actorNew->spr.zvel = (actorNew->spr.xvel * (int_ActorUpperZ(actor->user.targetActor) - actorNew->int_pos().Z)) / dist;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoNapalm, mp[i].dist_out);
@ -12674,8 +12664,7 @@ void InitHeartAttack(PLAYER* pp)
auto oclipdist = plActor->spr.clipdist;
plActor->spr.clipdist = 1;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoBloodWorm, mp[i].dist_out);
@ -13020,9 +13009,7 @@ int InitLaser(PLAYER* pp)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() - 5));
}
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
return 0;
}
@ -13684,8 +13671,7 @@ int InitMicro(PLAYER* pp)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + (RandomRange(MICRO_ANG) - (MICRO_ANG / 2)) - 16));
}
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
}
return 0;
@ -14015,8 +14001,7 @@ int InitSerpSpell(DSWActor* actor)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + delta_ang[i]));
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoMirvMissile, 400);
actor->spr.clipdist = oclipdist;
@ -14110,8 +14095,7 @@ int InitSerpMonstSpell(DSWActor* actor)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + delta_ang[i]));
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoMirvMissile, 400);
actor->spr.clipdist = oclipdist;
@ -14166,8 +14150,7 @@ int InitEnemyRocket(DSWActor* actor)
actorNew->user.Radius = 200;
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (actor->user.spal == PAL_XLAT_LT_TAN)
{
@ -14244,8 +14227,7 @@ int InitEnemyRail(DSWActor* actor)
actorNew->spr.clipdist = 64 >> 2;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (TestMissileSetPos(actorNew, DoRailStart, 600, actorNew->spr.zvel))
{
@ -14302,8 +14284,7 @@ int InitZillaRocket(DSWActor* actor)
actorNew->user.Radius = 200;
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
// Zilla has seekers!
if (i != 1 && i != 4)
@ -14352,8 +14333,7 @@ int InitEnemyStar(DSWActor* actor)
actorNew->spr.angle = actor->spr.angle;
actorNew->spr.clipdist = 64L>>2;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoStar, 400);
@ -14389,8 +14369,7 @@ int InitEnemyCrossbow(DSWActor* actor)
actorNew->user.RotNum = 5;
NewStateGroup(actorNew, &sg_CrossBolt[0]);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
actorNew->user.Flags |= (SPR_XFLIP_TOGGLE);
@ -14440,8 +14419,7 @@ int InitSkelSpell(DSWActor* actor)
if (dist != 0)
actorNew->spr.zvel = (actorNew->spr.xvel * (int_ActorUpperZ(actor->user.targetActor) - nz)) / dist;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
MissileSetPos(actorNew, DoElectro, 400);
@ -14491,10 +14469,9 @@ int InitCoolgFire(DSWActor* actor)
// distance
actorNew->spr.zvel = (actorNew->spr.xvel * (int_ActorUpperZ(actor->user.targetActor) - nz)) / dist;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
nx = MulScale(728, bcos(nang), 14);
nx = MulScale(728, bcos(nang), 14);
ny = MulScale(728, bsin(nang), 14);
move_missile(actorNew, nx, ny, 0, actorNew->user.int_ceiling_dist(), actorNew->user.int_floor_dist(), 0, 3);
@ -14626,8 +14603,7 @@ void InitFireballTrap(DSWActor* actor)
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER);
actorNew->user.WeaponNum = WPN_HOTHEAD;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
}
void InitBoltTrap(DSWActor* actor)
@ -14650,8 +14626,7 @@ void InitBoltTrap(DSWActor* actor)
NewStateGroup(actorNew, &sg_Rocket[0]);
actorNew->user.Radius = 200;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
}
@ -14675,9 +14650,8 @@ void InitSpearTrap(DSWActor* actor)
actorNew->user.RotNum = 5;
NewStateGroup(actorNew, &sg_CrossBolt[0]);
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
actorNew->user.Flags |= (SPR_XFLIP_TOGGLE);
PlaySound(DIGI_STAR, actor, v3df_none);
@ -14757,8 +14731,7 @@ int InitTracerUzi(PLAYER* pp)
// a bit of randomness
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + RandomRange(30) - 15));
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (pp->Flags & (PF_DIVING) || SpriteInUnderwaterArea(actorNew))
actorNew->user.Flags |= (SPR_UNDERWATER);
@ -14797,8 +14770,7 @@ int InitTracerTurret(DSWActor* actor, DSWActor* Operator, fixed_t q16horiz)
// a bit of randomness
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + RandomRange(30) - 15));
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (SpriteInUnderwaterArea(actorNew))
actorNew->user.Flags |= (SPR_UNDERWATER);
@ -15180,8 +15152,7 @@ int InitTankShell(DSWActor* actor, PLAYER* pp)
actorNew->add_int_ang(RandomRange(30) - 15);
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang()));
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (SpriteInUnderwaterArea(actorNew))
actorNew->user.Flags |= (SPR_UNDERWATER);
@ -15280,8 +15251,7 @@ int InitTurretMicro(DSWActor* actor, PLAYER* pp)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + (RandomRange(MICRO_ANG) - (MICRO_ANG / 2)) - 16));
}
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
}
return 0;
@ -15314,8 +15284,7 @@ int InitTurretRocket(DSWActor* actor, PLAYER* pp)
// a bit of randomness
//actorNew->spr.angle += RandomRange(30) - 15;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (SpriteInUnderwaterArea(actorNew))
actorNew->user.Flags |= (SPR_UNDERWATER);
@ -15350,8 +15319,7 @@ int InitTurretFireball(DSWActor* actor, PLAYER* pp)
actorNew->add_int_ang(RandomRange(30) - 15);
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang()));
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (SpriteInUnderwaterArea(actorNew))
actorNew->user.Flags |= (SPR_UNDERWATER);
@ -15395,8 +15363,7 @@ int InitTurretRail(DSWActor* actor, PLAYER* pp)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang()));
}
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
return 0;
}
@ -15434,8 +15401,7 @@ int InitTurretLaser(DSWActor* actor, PLAYER* pp)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang()));
}
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
return 0;
}
@ -16178,8 +16144,7 @@ int InitGrenade(PLAYER* pp)
}
actorNew->spr.zvel = zvel;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
if (!auto_aim)
{
@ -16227,8 +16192,7 @@ int InitSpriteGrenade(DSWActor* actor)
//actorNew->spr.zvel = (-RandomRange(100) * HORIZ_MULT);
actorNew->spr.zvel = -2000;
UpdateChangeXY(actorNew);
actorNew->user.change.Z = actorNew->spr.zvel;
UpdateChange(actorNew);
actorNew->spr.angle += DAngle90;
HelpMissileLateral(actorNew, 800);
@ -16285,8 +16249,7 @@ int InitMine(PLAYER* pp)
MissileSetPos(actorNew, DoMine, 800);
actorNew->user.change.Z = actorNew->spr.zvel>>1;
UpdateChangeXY(actorNew);
UpdateChange(actorNew, 0.5);
dot = DOT_PRODUCT_2D(pp->vect.X, pp->vect.Y, pp->angle.ang.Cos() * (1 << 14), pp->angle.ang.Sin() * (1 << 14));