Player movement speeds are now specified by classtype.

This commit is contained in:
Marco Cawthorne 2023-01-18 00:04:49 -08:00
parent 99c8ce8787
commit 1697f318cd
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
2 changed files with 91 additions and 9 deletions

View File

@ -56,12 +56,15 @@ class player:NSClientPlayer
/* ammo 3 */
PREDICTED_INT(mode_tempstate)
virtual void(void) Physics_Jump;
virtual void Physics_Jump(void);
virtual float Physics_MaxSpeed(void);
#ifdef CLIENT
virtual void(float,float) ReceiveEntity;
virtual void(void) PredictPreFrame;
virtual void(void) PredictPostFrame;
virtual void ReceiveEntity(float,float);
virtual void PredictPreFrame(void);
virtual void PredictPostFrame(void);
virtual void UpdateAliveCam(void);
#else
int m_iMaxHealth;
int m_iMaxArmor;
@ -73,11 +76,12 @@ class player:NSClientPlayer
int m_iMaxDetpack;
int m_iMaxMedikit;
virtual void(void) EvaluateEntity;
virtual float(entity, float) SendEntity;
virtual void EvaluateEntity(void);
virtual float SendEntity(entity, float);
virtual void SpawnIntoGame(void);
virtual void MakeClass(classtype_e);
virtual void(void) SpawnIntoGame;
virtual void(classtype_e) MakeClass;
#endif
};
@ -85,6 +89,39 @@ class player:NSClientPlayer
void Weapons_AmmoUpdate(entity);
void HUD_AmmoNotify_Check(player pl);
void HUD_ItemNotify_Check(player pl);
void Camera_RunPosBob(vector angles, __inout vector camera_pos);
void Camera_StrafeRoll(__inout vector camera_angle);
void Shake_Update(NSClientPlayer);
void
player::UpdateAliveCam(void)
{
vector cam_pos = GetEyePos();
Camera_RunPosBob(view_angles, cam_pos);
g_view.SetCameraOrigin(cam_pos);
Camera_StrafeRoll(view_angles);
g_view.SetCameraAngle(view_angles);
if (vehicle) {
NSVehicle veh = (NSVehicle)vehicle;
if (veh.UpdateView)
veh.UpdateView();
} else if (health) {
if (autocvar_pm_thirdPerson == TRUE) {
makevectors(view_angles);
vector vStart = [pSeat->m_vecPredictedOrigin[0], pSeat->m_vecPredictedOrigin[1], pSeat->m_vecPredictedOrigin[2] + 16] + (v_right * 4);
vector vEnd = vStart + (v_forward * -48) + [0,0,16] + (v_right * 4);
traceline(vStart, vEnd, FALSE, this);
g_view.SetCameraOrigin(trace_endpos + (v_forward * 5));
}
}
Shake_Update(this);
g_view.AddPunchAngle(punchangle);
}
/*
=================
player::ReceiveEntity
@ -462,7 +499,7 @@ player::MakeClass(classtype_e class)
m_iMaxShells = 40;
m_iMaxNails = 50;
m_iMaxCells = 200;
m_iMaxRockets = 20;
m_iMaxRockets = 60;
env_message_single(this, "HELP_PYRO");
break;
case CLASS_SPY:

View File

@ -49,3 +49,48 @@ player::Physics_Jump(void)
}
}
}
float
player::Physics_MaxSpeed(void)
{
float maxspeed = serverkeyfloat("phy_maxspeed");
float desiredspeed;
/* values courtesy of https://wiki.teamfortress.com/ */
switch (classtype) {
case CLASS_SCOUT:
desiredspeed = 400.0f;
break;
case CLASS_SNIPER:
desiredspeed = 300.0f;
break;
case CLASS_SOLDIER:
desiredspeed = 240.0f;
break;
case CLASS_DEMO:
desiredspeed = 280.0f;
break;
case CLASS_MEDIC:
desiredspeed = 320.0f;
break;
case CLASS_HVYWEAPON:
desiredspeed = 228.0f;
break;
case CLASS_PYRO:
desiredspeed = 300.0f;
break;
case CLASS_SPY:
desiredspeed = 300.0f;
break;
case CLASS_ENGINEER:
desiredspeed = 300.0f;
break;
default:
desiredspeed = 300.0f;
}
if (GetFlags() & FL_CROUCHING)
desiredspeed /= 3;
return min(desiredspeed, maxspeed);
}