mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 22:33:17 +00:00
Made onground a player property
"onground" was a global, despite being treated as a player property and crossed with instances from other players or prediction.
This commit is contained in:
parent
6d89fdbd53
commit
79abe2d4e9
3 changed files with 19 additions and 10 deletions
|
@ -434,6 +434,7 @@ public:
|
|||
TObjPtr<AWeapon> PremorphWeapon; // ready weapon before morphing
|
||||
int chickenPeck; // chicken peck countdown
|
||||
int jumpTics; // delay the next jump for a moment
|
||||
bool onground; // Identifies if this player is on the ground or other object
|
||||
|
||||
int respawn_time; // [RH] delay respawning until this tic
|
||||
TObjPtr<AActor> camera; // [RH] Whose eyes this player sees through
|
||||
|
|
|
@ -210,8 +210,6 @@ CCMD (playerclasses)
|
|||
// 16 pixels of bob
|
||||
#define MAXBOB 0x100000
|
||||
|
||||
bool onground;
|
||||
|
||||
FArchive &operator<< (FArchive &arc, player_t *&p)
|
||||
{
|
||||
return arc.SerializePointer (players, (BYTE **)&p, sizeof(*players));
|
||||
|
@ -268,6 +266,7 @@ player_t::player_t()
|
|||
PremorphWeapon(0),
|
||||
chickenPeck(0),
|
||||
jumpTics(0),
|
||||
onground(0),
|
||||
respawn_time(0),
|
||||
camera(0),
|
||||
air_finished(0),
|
||||
|
@ -375,6 +374,7 @@ player_t &player_t::operator=(const player_t &p)
|
|||
PremorphWeapon = p.PremorphWeapon;
|
||||
chickenPeck = p.chickenPeck;
|
||||
jumpTics = p.jumpTics;
|
||||
onground = p.onground;
|
||||
respawn_time = p.respawn_time;
|
||||
camera = p.camera;
|
||||
air_finished = p.air_finished;
|
||||
|
@ -1747,7 +1747,7 @@ void P_CalcHeight (player_t *player)
|
|||
{
|
||||
player->bob = 0;
|
||||
}
|
||||
else if ((player->mo->flags & MF_NOGRAVITY) && !onground)
|
||||
else if ((player->mo->flags & MF_NOGRAVITY) && !player->onground)
|
||||
{
|
||||
player->bob = FRACUNIT / 2;
|
||||
}
|
||||
|
@ -1872,7 +1872,7 @@ void P_MovePlayer (player_t *player)
|
|||
mo->angle += cmd->ucmd.yaw << 16;
|
||||
}
|
||||
|
||||
onground = (mo->z <= mo->floorz) || (mo->flags2 & MF2_ONMOBJ) || (mo->BounceFlags & BOUNCE_MBF) || (player->cheats & CF_NOCLIP2);
|
||||
player->onground = (mo->z <= mo->floorz) || (mo->flags2 & MF2_ONMOBJ) || (mo->BounceFlags & BOUNCE_MBF) || (player->cheats & CF_NOCLIP2);
|
||||
|
||||
// killough 10/98:
|
||||
//
|
||||
|
@ -1890,7 +1890,7 @@ void P_MovePlayer (player_t *player)
|
|||
|
||||
movefactor = P_GetMoveFactor (mo, &friction);
|
||||
bobfactor = friction < ORIG_FRICTION ? movefactor : ORIG_FRICTION_FACTOR;
|
||||
if (!onground && !(player->mo->flags & MF_NOGRAVITY) && !player->mo->waterlevel)
|
||||
if (!player->onground && !(player->mo->flags & MF_NOGRAVITY) && !player->mo->waterlevel)
|
||||
{
|
||||
// [RH] allow very limited movement if not on ground.
|
||||
movefactor = FixedMul (movefactor, level.aircontrol);
|
||||
|
@ -2061,12 +2061,12 @@ void P_DeathThink (player_t *player)
|
|||
|
||||
P_MovePsprites (player);
|
||||
|
||||
onground = (player->mo->z <= player->mo->floorz);
|
||||
player->onground = (player->mo->z <= player->mo->floorz);
|
||||
if (player->mo->IsKindOf (RUNTIME_CLASS(APlayerChunk)))
|
||||
{ // Flying bloody skull or flying ice chunk
|
||||
player->viewheight = 6 * FRACUNIT;
|
||||
player->deltaviewheight = 0;
|
||||
if (onground)
|
||||
if (player->onground)
|
||||
{
|
||||
if (player->mo->pitch > -(int)ANGLE_1*19)
|
||||
{
|
||||
|
@ -2365,7 +2365,7 @@ void P_PlayerThink (player_t *player)
|
|||
if (player->jumpTics != 0)
|
||||
{
|
||||
player->jumpTics--;
|
||||
if (onground && player->jumpTics < -18)
|
||||
if (player->onground && player->jumpTics < -18)
|
||||
{
|
||||
player->jumpTics = 0;
|
||||
}
|
||||
|
@ -2465,7 +2465,7 @@ void P_PlayerThink (player_t *player)
|
|||
{
|
||||
player->mo->velz = 3*FRACUNIT;
|
||||
}
|
||||
else if (level.IsJumpingAllowed() && onground && player->jumpTics == 0)
|
||||
else if (level.IsJumpingAllowed() && player->onground && player->jumpTics == 0)
|
||||
{
|
||||
fixed_t jumpvelz = player->mo->JumpZ * 35 / TICRATE;
|
||||
|
||||
|
@ -2877,6 +2877,14 @@ void player_t::Serialize (FArchive &arc)
|
|||
{
|
||||
settings_controller = (this - players == Net_Arbitrator);
|
||||
}
|
||||
if (SaveVersion >= 4505)
|
||||
{
|
||||
arc << onground;
|
||||
}
|
||||
else
|
||||
{
|
||||
onground = (mo->z <= mo->floorz) || (mo->flags2 & MF2_ONMOBJ) || (mo->BounceFlags & BOUNCE_MBF) || (cheats & CF_NOCLIP2);
|
||||
}
|
||||
|
||||
if (isbot)
|
||||
{
|
||||
|
|
|
@ -76,7 +76,7 @@ const char *GetVersionString();
|
|||
|
||||
// Use 4500 as the base git save version, since it's higher than the
|
||||
// SVN revision ever got.
|
||||
#define SAVEVER 4504
|
||||
#define SAVEVER 4505
|
||||
|
||||
#define SAVEVERSTRINGIFY2(x) #x
|
||||
#define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x)
|
||||
|
|
Loading…
Reference in a new issue