- Duke: Wrap calls that set player_struct::PlayerNowPosition.Z.

This commit is contained in:
Mitchell Richters 2022-11-15 17:47:00 +11:00 committed by Christoph Oelckers
parent 008c05710b
commit 93189037c3
6 changed files with 27 additions and 22 deletions

View file

@ -1372,8 +1372,8 @@ void movetransports_d(void)
ps[p].backupxy();
if (ps[p].jetpack_on && (PlayerInput(p, SB_JUMP) || ps[p].jetpack_on < 11))
ps[p].PlayerNowPosition.Z = Owner->spr.pos.Z - 24;
else ps[p].PlayerNowPosition.Z = Owner->spr.pos.Z + 24;
ps[p].posZset(Owner->spr.pos.Z - 24);
else ps[p].posZset(Owner->spr.pos.Z + 24);
ps[p].backupz();
auto pa = ps[p].GetActor();
@ -1397,7 +1397,7 @@ void movetransports_d(void)
}
if (ps[p].GetActor()->spr.extra > 0)
S_PlayActorSound(DUKE_UNDERWATER, act2);
ps[p].PlayerNowPosition.Z = Owner->sector()->ceilingz + 7;
ps[p].posZset(Owner->sector()->ceilingz + 7);
ps[p].backupz();
// this is actually below the precision óf the original Build coordinate system...
@ -1416,7 +1416,7 @@ void movetransports_d(void)
}
S_PlayActorSound(DUKE_GASP, act2);
ps[p].PlayerNowPosition.Z = Owner->sector()->floorz - 7;
ps[p].posZset(Owner->sector()->floorz - 7);
ps[p].backupz();
ps[p].jumping_toggle = 1;

View file

@ -1257,8 +1257,8 @@ void movetransports_r(void)
ps[p].backupxy();
if (ps[p].jetpack_on && (PlayerInput(p, SB_JUMP) || ps[p].jetpack_on < 11))
ps[p].PlayerNowPosition.Z = Owner->spr.pos.Z - 24;
else ps[p].PlayerNowPosition.Z = Owner->spr.pos.Z + 24;
ps[p].posZset(Owner->spr.pos.Z - 24);
else ps[p].posZset(Owner->spr.pos.Z + 24);
ps[p].backupz();
ChangeActorSect(act2, Owner->sector());
@ -1274,7 +1274,7 @@ void movetransports_r(void)
if (onfloorz && sectlotag == 160 && ps[p].PlayerNowPosition.Z > sectp->floorz - 48)
{
k = 2;
ps[p].PlayerNowPosition.Z = Owner->sector()->ceilingz + 7;
ps[p].posZset(Owner->sector()->ceilingz + 7);
ps[p].backupz();
}
@ -1282,7 +1282,7 @@ void movetransports_r(void)
{
k = 2;
if (ps[p].GetActor()->spr.extra <= 0) break;
ps[p].PlayerNowPosition.Z = Owner->sector()->floorz - 49;
ps[p].posZset(Owner->sector()->floorz - 49);
ps[p].backupz();
}
}
@ -1297,7 +1297,7 @@ void movetransports_r(void)
FX_StopAllSounds();
}
S_PlayActorSound(DUKE_UNDERWATER, ps[p].GetActor());
ps[p].PlayerNowPosition.Z = Owner->sector()->ceilingz + 7;
ps[p].posZset(Owner->sector()->ceilingz + 7);
ps[p].backupz();
if (ps[p].OnMotorcycle)
ps[p].moto_underwater = 1;
@ -1313,7 +1313,7 @@ void movetransports_r(void)
}
S_PlayActorSound(DUKE_GASP, ps[p].GetActor());
ps[p].PlayerNowPosition.Z = Owner->sector()->floorz - 7;
ps[p].posZset(Owner->sector()->floorz - 7);
ps[p].backupz();
}

View file

@ -1732,7 +1732,7 @@ static void operateJetpack(int snum, ESyncBits actions, int psectlotag, double f
if (p->PlayerNowPosition.Z > floorz - k)
p->PlayerNowPosition.Z += ((floorz - k) - p->PlayerNowPosition.Z) * 0.5;
if (p->PlayerNowPosition.Z < pact->ceilingz + 18)
p->PlayerNowPosition.Z = pact->ceilingz + 18;
p->posZset(pact->ceilingz + 18);
}
@ -1791,7 +1791,7 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
// not jumping or crouching
if ((actions & (SB_JUMP|SB_CROUCH)) == 0 && p->on_ground && (psect->floorstat & CSTAT_SECTOR_SLOPE) && p->PlayerNowPosition.Z >= (floorz - i - 16))
p->PlayerNowPosition.Z = floorz - i;
p->posZset(floorz - i);
else
{
p->on_ground = 0;
@ -1859,7 +1859,7 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
p->PlayerNowPosition.Z += ((floorz - i * 0.5) - p->PlayerNowPosition.Z) * 0.5; //Smooth on the water
if (p->on_warping_sector == 0 && p->PlayerNowPosition.Z > floorz - 16)
{
p->PlayerNowPosition.Z = floorz - 16;
p->posZset(floorz - 16);
p->vel.Z *= 0.5;
}
}
@ -1918,7 +1918,7 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
if (p->vel.Z < 0)
p->vel.X = p->vel.Y = 0;
p->vel.Z = 0.5;
p->PlayerNowPosition.Z = ceilingz + 4;
p->posZset(ceilingz + 4);
}
}
@ -1984,7 +1984,7 @@ static void underwater(int snum, ESyncBits actions, double floorz, double ceilin
if (p->PlayerNowPosition.Z < ceilingz + 4)
{
p->PlayerNowPosition.Z = ceilingz + 4;
p->posZset(ceilingz + 4);
p->vel.Z = 0;
}
@ -2043,7 +2043,7 @@ int operateTripbomb(int snum)
auto delta = hit.hitpos.XY() - p->posXY();
if (delta.LengthSquared() < (18.125 * 18.125))
{
p->PlayerNowPosition.Z = p->PlayerOldPosition.Z;
p->posZset(p->PlayerOldPosition.Z);
p->vel.Z = 0;
return 1;
}
@ -2585,7 +2585,7 @@ static void operateweapon(int snum, ESyncBits actions)
case TRIPBOMB_WEAPON: // Claymore in NAM
if (p->kickback_pic < 4)
{
p->PlayerNowPosition.Z = p->PlayerOldPosition.Z;
p->posZset(p->PlayerOldPosition.Z);
p->vel.Z = 0;
if (p->kickback_pic == 3)
fi.shoot(pact, HANDHOLDINGLASER);

View file

@ -2080,7 +2080,7 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
if (p->PlayerNowPosition.Z < floorz - i) //falling
{
if ((actions & (SB_JUMP|SB_CROUCH)) == 0 && p->on_ground && (psect->floorstat & CSTAT_SECTOR_SLOPE) && p->PlayerNowPosition.Z >= (floorz - i - 16))
p->PlayerNowPosition.Z = floorz - i;
p->posZset(floorz - i);
else
{
p->on_ground = 0;
@ -2186,7 +2186,7 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
p->PlayerNowPosition.Z += ((floorz - i * 0.5) - p->PlayerNowPosition.Z) * 0.5; //Smooth on the water
if (p->on_warping_sector == 0 && p->PlayerNowPosition.Z > floorz - 16)
{
p->PlayerNowPosition.Z = floorz - 16;
p->posZset(floorz - 16);
p->vel.Z *= 0.5;
}
}
@ -2241,7 +2241,7 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
if (p->vel.Z < 0)
p->vel.X = p->vel.Y = 0;
p->vel.Z = 0.5;
p->PlayerNowPosition.Z = ceilingz + 4;
p->posZset(ceilingz + 4);
}
}
@ -2303,7 +2303,7 @@ static void underwater(int snum, ESyncBits actions, double floorz, double ceilin
if (p->PlayerNowPosition.Z < ceilingz + 4)
{
p->PlayerNowPosition.Z = ceilingz + 4;
p->posZset(ceilingz + 4);
p->vel.Z = 0;
}

View file

@ -436,7 +436,7 @@ void operateweapon_ww(int snum, ESyncBits actions)
if (aplWeaponFlags(p->curr_weapon, snum) & WEAPON_FLAG_STANDSTILL
&& p->kickback_pic < (aplWeaponFireDelay(p->curr_weapon, snum) + 1))
{
p->PlayerNowPosition.Z = p->PlayerOldPosition.Z;
p->posZset(p->PlayerOldPosition.Z);
p->vel.Z = 0;
}
if (p->kickback_pic == aplWeaponSound2Time(p->curr_weapon, snum))

View file

@ -370,6 +370,11 @@ struct player_struct
{
return PlayerNowPosition.XY();
}
void posZset(const double val)
{
PlayerNowPosition.Z = val;
}
};
struct Cycler