mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-21 11:31:41 +00:00
- more player code exported
This commit is contained in:
parent
10deb5ce56
commit
6e25c34fda
7 changed files with 238 additions and 224 deletions
|
@ -567,8 +567,6 @@ inline bool AActor::IsNoClip2() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CROUCHSPEED (1./12)
|
|
||||||
|
|
||||||
bool P_IsPlayerTotallyFrozen(const player_t *player);
|
bool P_IsPlayerTotallyFrozen(const player_t *player);
|
||||||
|
|
||||||
#endif // __D_PLAYER_H__
|
#endif // __D_PLAYER_H__
|
||||||
|
|
|
@ -1464,6 +1464,12 @@ bool FLevelLocals::IsCrouchingAllowed() const
|
||||||
return !(flags & LEVEL_CROUCH_NO);
|
return !(flags & LEVEL_CROUCH_NO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(FLevelLocals, IsCrouchingAllowed)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(FLevelLocals);
|
||||||
|
ACTION_RETURN_BOOL(self->IsCrouchingAllowed());
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
|
@ -3270,6 +3270,14 @@ void P_CheckFakeFloorTriggers (AActor *mo, double oldz, bool oldz_has_viewheight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(AActor, CheckFakeFloorTriggers)
|
||||||
|
{
|
||||||
|
PARAM_SELF_PROLOGUE(AActor);
|
||||||
|
PARAM_FLOAT(oldz);
|
||||||
|
PARAM_BOOL_DEF(oldz_has_viewh);
|
||||||
|
P_CheckFakeFloorTriggers(self, oldz, oldz_has_viewh);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
// PlayerLandedOnThing
|
// PlayerLandedOnThing
|
||||||
|
|
218
src/p_user.cpp
218
src/p_user.cpp
|
@ -2520,200 +2520,6 @@ void P_DeathThink (player_t *player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// PROC P_CrouchMove
|
|
||||||
//
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void P_CrouchMove(player_t * player, int direction)
|
|
||||||
{
|
|
||||||
double defaultheight = player->mo->FullHeight;
|
|
||||||
double savedheight = player->mo->Height;
|
|
||||||
double crouchspeed = direction * CROUCHSPEED;
|
|
||||||
double oldheight = player->viewheight;
|
|
||||||
|
|
||||||
player->crouchdir = (signed char) direction;
|
|
||||||
player->crouchfactor += crouchspeed;
|
|
||||||
|
|
||||||
// check whether the move is ok
|
|
||||||
player->mo->Height = defaultheight * player->crouchfactor;
|
|
||||||
if (!P_TryMove(player->mo, player->mo->Pos(), false, NULL))
|
|
||||||
{
|
|
||||||
player->mo->Height = savedheight;
|
|
||||||
if (direction > 0)
|
|
||||||
{
|
|
||||||
// doesn't fit
|
|
||||||
player->crouchfactor -= crouchspeed;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
player->mo->Height = savedheight;
|
|
||||||
|
|
||||||
player->crouchfactor = clamp(player->crouchfactor, 0.5, 1.);
|
|
||||||
player->viewheight = player->mo->ViewHeight * player->crouchfactor;
|
|
||||||
player->crouchviewdelta = player->viewheight - player->mo->ViewHeight;
|
|
||||||
|
|
||||||
// Check for eyes going above/below fake floor due to crouching motion.
|
|
||||||
P_CheckFakeFloorTriggers(player->mo, player->mo->Z() + oldheight, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// PROC P_CheckFOV
|
|
||||||
//
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void P_CheckFOV(player_t *player)
|
|
||||||
{
|
|
||||||
// [RH] Zoom the player's FOV
|
|
||||||
float desired = player->DesiredFOV;
|
|
||||||
// Adjust FOV using on the currently held weapon.
|
|
||||||
if (player->playerstate != PST_DEAD && // No adjustment while dead.
|
|
||||||
player->ReadyWeapon != NULL && // No adjustment if no weapon.
|
|
||||||
player->ReadyWeapon->FOVScale != 0) // No adjustment if the adjustment is zero.
|
|
||||||
{
|
|
||||||
// A negative scale is used to prevent G_AddViewAngle/G_AddViewPitch
|
|
||||||
// from scaling with the FOV scale.
|
|
||||||
desired *= fabsf(player->ReadyWeapon->FOVScale);
|
|
||||||
}
|
|
||||||
if (player->FOV != desired)
|
|
||||||
{
|
|
||||||
if (fabsf(player->FOV - desired) < 7.f)
|
|
||||||
{
|
|
||||||
player->FOV = desired;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
float zoom = MAX(7.f, fabsf(player->FOV - desired) * 0.025f);
|
|
||||||
if (player->FOV > desired)
|
|
||||||
{
|
|
||||||
player->FOV = player->FOV - zoom;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player->FOV = player->FOV + zoom;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// PROC P_CheckCheats
|
|
||||||
//
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void P_CheckCheats(player_t *player)
|
|
||||||
{
|
|
||||||
// No-clip cheat
|
|
||||||
if ((player->cheats & (CF_NOCLIP | CF_NOCLIP2)) == CF_NOCLIP2)
|
|
||||||
{ // No noclip2 without noclip
|
|
||||||
player->cheats &= ~CF_NOCLIP2;
|
|
||||||
}
|
|
||||||
if (player->cheats & (CF_NOCLIP | CF_NOCLIP2) || (player->mo->GetDefault()->flags & MF_NOCLIP))
|
|
||||||
{
|
|
||||||
player->mo->flags |= MF_NOCLIP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player->mo->flags &= ~MF_NOCLIP;
|
|
||||||
}
|
|
||||||
if (player->cheats & CF_NOCLIP2)
|
|
||||||
{
|
|
||||||
player->mo->flags |= MF_NOGRAVITY;
|
|
||||||
}
|
|
||||||
else if (!(player->mo->flags2 & MF2_FLY) && !(player->mo->GetDefault()->flags & MF_NOGRAVITY))
|
|
||||||
{
|
|
||||||
player->mo->flags &= ~MF_NOGRAVITY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// PROC P_CheckFrozen
|
|
||||||
//
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
bool P_CheckFrozen(player_t *player)
|
|
||||||
{
|
|
||||||
auto cmd = &player->cmd;
|
|
||||||
bool totallyfrozen = P_IsPlayerTotallyFrozen(player);
|
|
||||||
|
|
||||||
// [RH] Being totally frozen zeros out most input parameters.
|
|
||||||
if (totallyfrozen)
|
|
||||||
{
|
|
||||||
if (gamestate == GS_TITLELEVEL)
|
|
||||||
{
|
|
||||||
cmd->ucmd.buttons = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cmd->ucmd.buttons &= BT_USE;
|
|
||||||
}
|
|
||||||
cmd->ucmd.pitch = 0;
|
|
||||||
cmd->ucmd.yaw = 0;
|
|
||||||
cmd->ucmd.roll = 0;
|
|
||||||
cmd->ucmd.forwardmove = 0;
|
|
||||||
cmd->ucmd.sidemove = 0;
|
|
||||||
cmd->ucmd.upmove = 0;
|
|
||||||
player->turnticks = 0;
|
|
||||||
}
|
|
||||||
else if (player->cheats & CF_FROZEN)
|
|
||||||
{
|
|
||||||
cmd->ucmd.forwardmove = 0;
|
|
||||||
cmd->ucmd.sidemove = 0;
|
|
||||||
cmd->ucmd.upmove = 0;
|
|
||||||
}
|
|
||||||
return totallyfrozen;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// PROC P_CheckCrouch
|
|
||||||
//
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void P_CheckCrouch(player_t *player, bool totallyfrozen)
|
|
||||||
{
|
|
||||||
if (player->cmd.ucmd.buttons & BT_JUMP)
|
|
||||||
{
|
|
||||||
player->cmd.ucmd.buttons &= ~BT_CROUCH;
|
|
||||||
}
|
|
||||||
if (player->CanCrouch() && player->health > 0 && level.IsCrouchingAllowed())
|
|
||||||
{
|
|
||||||
if (!totallyfrozen)
|
|
||||||
{
|
|
||||||
int crouchdir = player->crouching;
|
|
||||||
|
|
||||||
if (crouchdir == 0)
|
|
||||||
{
|
|
||||||
crouchdir = (player->cmd.ucmd.buttons & BT_CROUCH) ? -1 : 1;
|
|
||||||
}
|
|
||||||
else if (player->cmd.ucmd.buttons & BT_CROUCH)
|
|
||||||
{
|
|
||||||
player->crouching = 0;
|
|
||||||
}
|
|
||||||
if (crouchdir == 1 && player->crouchfactor < 1 &&
|
|
||||||
player->mo->Top() < player->mo->ceilingz)
|
|
||||||
{
|
|
||||||
P_CrouchMove(player, 1);
|
|
||||||
}
|
|
||||||
else if (crouchdir == -1 && player->crouchfactor > 0.5)
|
|
||||||
{
|
|
||||||
P_CrouchMove(player, -1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player->Uncrouch();
|
|
||||||
}
|
|
||||||
|
|
||||||
player->crouchoffset = -(player->mo->ViewHeight) * (1 - player->crouchfactor);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// PROC P_CheckMusicChange
|
// PROC P_CheckMusicChange
|
||||||
|
@ -3069,30 +2875,6 @@ void P_HandleMovement(player_t *player)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckFOV)
|
|
||||||
{
|
|
||||||
PARAM_SELF_PROLOGUE(APlayerPawn);
|
|
||||||
P_CheckFOV(self->player);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckCheats)
|
|
||||||
{
|
|
||||||
PARAM_SELF_PROLOGUE(APlayerPawn);
|
|
||||||
P_CheckCheats(self->player);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckFrozen)
|
|
||||||
{
|
|
||||||
PARAM_SELF_PROLOGUE(APlayerPawn);
|
|
||||||
ACTION_RETURN_BOOL(P_CheckFrozen(self->player));
|
|
||||||
}
|
|
||||||
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckCrouch)
|
|
||||||
{
|
|
||||||
PARAM_SELF_PROLOGUE(APlayerPawn);
|
|
||||||
PARAM_BOOL(totally);
|
|
||||||
P_CheckCrouch(self->player, totally);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckMusicChange)
|
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckMusicChange)
|
||||||
{
|
{
|
||||||
PARAM_SELF_PROLOGUE(APlayerPawn);
|
PARAM_SELF_PROLOGUE(APlayerPawn);
|
||||||
|
|
|
@ -540,6 +540,7 @@ class Actor : Thinker native
|
||||||
native void SetXYZ(vector3 newpos);
|
native void SetXYZ(vector3 newpos);
|
||||||
native Actor GetPointer(int aaptr);
|
native Actor GetPointer(int aaptr);
|
||||||
native double BulletSlope(out FTranslatedLineTarget pLineTarget = null, int aimflags = 0);
|
native double BulletSlope(out FTranslatedLineTarget pLineTarget = null, int aimflags = 0);
|
||||||
|
native void CheckFakeFloorTriggers (double oldz, bool oldz_has_viewheight = false);
|
||||||
|
|
||||||
native bool CheckMissileSpawn(double maxdist);
|
native bool CheckMissileSpawn(double maxdist);
|
||||||
native bool CheckPosition(Vector2 pos, bool actorsonly = false, FCheckPosition tm = null);
|
native bool CheckPosition(Vector2 pos, bool actorsonly = false, FCheckPosition tm = null);
|
||||||
|
|
|
@ -530,6 +530,7 @@ struct LevelLocals native
|
||||||
native static void RemoveAllBots(bool fromlist);
|
native static void RemoveAllBots(bool fromlist);
|
||||||
native void SetInterMusic(String nextmap);
|
native void SetInterMusic(String nextmap);
|
||||||
native String FormatMapName(int mapnamecolor);
|
native String FormatMapName(int mapnamecolor);
|
||||||
|
native bool IsCrouchingAllowed() const;
|
||||||
|
|
||||||
String TimeFormatted(bool totals = false)
|
String TimeFormatted(bool totals = false)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,7 @@ struct UserCmd native
|
||||||
|
|
||||||
class PlayerPawn : Actor native
|
class PlayerPawn : Actor native
|
||||||
{
|
{
|
||||||
|
const CROUCHSPEED = (1./12);
|
||||||
|
|
||||||
native int crouchsprite;
|
native int crouchsprite;
|
||||||
native int MaxHealth;
|
native int MaxHealth;
|
||||||
|
@ -215,16 +216,211 @@ class PlayerPawn : Actor native
|
||||||
return -1, -1;
|
return -1, -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// PROC P_CheckFOV
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
virtual void CheckFOV()
|
||||||
|
{
|
||||||
|
let player = self.player;
|
||||||
|
|
||||||
|
// [RH] Zoom the player's FOV
|
||||||
|
float desired = player.DesiredFOV;
|
||||||
|
// Adjust FOV using on the currently held weapon.
|
||||||
|
if (player.playerstate != PST_DEAD && // No adjustment while dead.
|
||||||
|
player.ReadyWeapon != NULL && // No adjustment if no weapon.
|
||||||
|
player.ReadyWeapon.FOVScale != 0) // No adjustment if the adjustment is zero.
|
||||||
|
{
|
||||||
|
// A negative scale is used to prevent G_AddViewAngle/G_AddViewPitch
|
||||||
|
// from scaling with the FOV scale.
|
||||||
|
desired *= abs(player.ReadyWeapon.FOVScale);
|
||||||
|
}
|
||||||
|
if (player.FOV != desired)
|
||||||
|
{
|
||||||
|
if (abs(player.FOV - desired) < 7.)
|
||||||
|
{
|
||||||
|
player.FOV = desired;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float zoom = MAX(7., abs(player.FOV - desired) * 0.025);
|
||||||
|
if (player.FOV > desired)
|
||||||
|
{
|
||||||
|
player.FOV = player.FOV - zoom;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.FOV = player.FOV + zoom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// PROC P_CheckCheats
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
virtual void CheckCheats()
|
||||||
|
{
|
||||||
|
let player = self.player;
|
||||||
|
// No-clip cheat
|
||||||
|
if ((player.cheats & (CF_NOCLIP | CF_NOCLIP2)) == CF_NOCLIP2)
|
||||||
|
{ // No noclip2 without noclip
|
||||||
|
player.cheats &= ~CF_NOCLIP2;
|
||||||
|
}
|
||||||
|
bNoClip = (player.cheats & (CF_NOCLIP | CF_NOCLIP2) || Default.bNoClip);
|
||||||
|
if (player.cheats & CF_NOCLIP2)
|
||||||
|
{
|
||||||
|
bNoGravity = true;
|
||||||
|
}
|
||||||
|
else if (!bFly && !Default.bNoGravity)
|
||||||
|
{
|
||||||
|
bNoGravity = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// PROC P_CheckFrozen
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
virtual bool CheckFrozen()
|
||||||
|
{
|
||||||
|
let player = self.player;
|
||||||
|
UserCmd cmd = player.cmd;
|
||||||
|
bool totallyfrozen = player.IsTotallyFrozen();
|
||||||
|
|
||||||
|
// [RH] Being totally frozen zeros out most input parameters.
|
||||||
|
if (totallyfrozen)
|
||||||
|
{
|
||||||
|
if (gamestate == GS_TITLELEVEL)
|
||||||
|
{
|
||||||
|
cmd.buttons = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmd.buttons &= BT_USE;
|
||||||
|
}
|
||||||
|
cmd.pitch = 0;
|
||||||
|
cmd.yaw = 0;
|
||||||
|
cmd.roll = 0;
|
||||||
|
cmd.forwardmove = 0;
|
||||||
|
cmd.sidemove = 0;
|
||||||
|
cmd.upmove = 0;
|
||||||
|
player.turnticks = 0;
|
||||||
|
}
|
||||||
|
else if (player.cheats & CF_FROZEN)
|
||||||
|
{
|
||||||
|
cmd.forwardmove = 0;
|
||||||
|
cmd.sidemove = 0;
|
||||||
|
cmd.upmove = 0;
|
||||||
|
}
|
||||||
|
return totallyfrozen;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool CanCrouch() const
|
||||||
|
{
|
||||||
|
return player.morphTics == 0 || bCrouchableMorph;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// PROC P_CrouchMove
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
virtual void CrouchMove(int direction)
|
||||||
|
{
|
||||||
|
let player = self.player;
|
||||||
|
|
||||||
|
double defaultheight = FullHeight;
|
||||||
|
double savedheight = Height;
|
||||||
|
double crouchspeed = direction * CROUCHSPEED;
|
||||||
|
double oldheight = player.viewheight;
|
||||||
|
|
||||||
|
player.crouchdir = direction;
|
||||||
|
player.crouchfactor += crouchspeed;
|
||||||
|
|
||||||
|
// check whether the move is ok
|
||||||
|
Height = defaultheight * player.crouchfactor;
|
||||||
|
if (!TryMove(Pos.XY, false, NULL))
|
||||||
|
{
|
||||||
|
Height = savedheight;
|
||||||
|
if (direction > 0)
|
||||||
|
{
|
||||||
|
// doesn't fit
|
||||||
|
player.crouchfactor -= crouchspeed;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Height = savedheight;
|
||||||
|
|
||||||
|
player.crouchfactor = clamp(player.crouchfactor, 0.5, 1.);
|
||||||
|
player.viewheight = ViewHeight * player.crouchfactor;
|
||||||
|
player.crouchviewdelta = player.viewheight - ViewHeight;
|
||||||
|
|
||||||
|
// Check for eyes going above/below fake floor due to crouching motion.
|
||||||
|
CheckFakeFloorTriggers(pos.Z + oldheight, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// PROC P_CheckCrouch
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
virtual void CheckCrouch(bool totallyfrozen)
|
||||||
|
{
|
||||||
|
let player = self.player;
|
||||||
|
UserCmd cmd = player.cmd;
|
||||||
|
|
||||||
|
if (cmd.buttons & BT_JUMP)
|
||||||
|
{
|
||||||
|
cmd.buttons &= ~BT_CROUCH;
|
||||||
|
}
|
||||||
|
if (CanCrouch() && player.health > 0 && level.IsCrouchingAllowed())
|
||||||
|
{
|
||||||
|
if (!totallyfrozen)
|
||||||
|
{
|
||||||
|
int crouchdir = player.crouching;
|
||||||
|
|
||||||
|
if (crouchdir == 0)
|
||||||
|
{
|
||||||
|
crouchdir = (cmd.buttons & BT_CROUCH) ? -1 : 1;
|
||||||
|
}
|
||||||
|
else if (cmd.buttons & BT_CROUCH)
|
||||||
|
{
|
||||||
|
player.crouching = 0;
|
||||||
|
}
|
||||||
|
if (crouchdir == 1 && player.crouchfactor < 1 && pos.Z + height < ceilingz)
|
||||||
|
{
|
||||||
|
CrouchMove(1);
|
||||||
|
}
|
||||||
|
else if (crouchdir == -1 && player.crouchfactor > 0.5)
|
||||||
|
{
|
||||||
|
CrouchMove(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.Uncrouch();
|
||||||
|
}
|
||||||
|
|
||||||
|
player.crouchoffset = -(ViewHeight) * (1 - player.crouchfactor);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// PROC P_PlayerThink
|
// PROC P_PlayerThink
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
native void CheckFOV();
|
|
||||||
native void CheckCheats();
|
|
||||||
native bool CheckFrozen();
|
|
||||||
native void CheckCrouch(bool totallyfrozen);
|
|
||||||
native void CheckMusicChange();
|
native void CheckMusicChange();
|
||||||
native void DeathThink ();
|
native void DeathThink ();
|
||||||
native void CheckPitch();
|
native void CheckPitch();
|
||||||
|
@ -513,6 +709,28 @@ struct PlayerInfo native play // this is what internally is known as player_t
|
||||||
native clearscope bool HasWeaponsInSlot(int slot) const;
|
native clearscope bool HasWeaponsInSlot(int slot) const;
|
||||||
native void TickPSprites();
|
native void TickPSprites();
|
||||||
|
|
||||||
|
bool IsTotallyFrozen()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
gamestate == GS_TITLELEVEL ||
|
||||||
|
(cheats & CF_TOTALLYFROZEN) ||
|
||||||
|
(level.frozen && timefreezer == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Uncrouch()
|
||||||
|
{
|
||||||
|
if (crouchfactor != 1)
|
||||||
|
{
|
||||||
|
crouchfactor = 1;
|
||||||
|
crouchoffset = 0;
|
||||||
|
crouchdir = 0;
|
||||||
|
crouching = 0;
|
||||||
|
crouchviewdelta = 0;
|
||||||
|
viewheight = mo.ViewHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
clearscope int fragSum () const
|
clearscope int fragSum () const
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
Loading…
Reference in a new issue