diff --git a/src/game/client/hud.cpp b/src/game/client/hud.cpp index 4c488464..a5106985 100644 --- a/src/game/client/hud.cpp +++ b/src/game/client/hud.cpp @@ -162,7 +162,7 @@ const Color NoTeamColor::White = Color(216, 216, 216, 255); CON_COMMAND(bhop_reset, "Resets BHop auto-detection if it was detected incorrectly") { - if (gHUD.GetBHopCapState() != BHopCap::Auto) + if (gHUD.GetBHopCapState() != EBHopCap::AutoDetect) { ConPrintf("BHop auto-detection is disabled, nothing was done.\n"); } @@ -721,9 +721,9 @@ float CHud::GetSensitivity(void) return m_flMouseSensitivity; } -BHopCap CHud::GetBHopCapState() +EBHopCap CHud::GetBHopCapState() { - return (BHopCap)clamp(cl_bhopcap.GetInt(), (int)BHopCap::Disabled, (int)BHopCap::Auto); + return cl_bhopcap.GetEnumClamped(); } bool CHud::IsHTMLEnabled() diff --git a/src/game/client/hud.h b/src/game/client/hud.h index 35f31439..45a82bcb 100644 --- a/src/game/client/hud.h +++ b/src/game/client/hud.h @@ -63,12 +63,7 @@ class IScheme; class ConVar; -enum class BHopCap -{ - Disabled = 0, - Enabled = 1, - Auto = 2 -}; +enum class EBHopCap; enum class HudPart { @@ -201,7 +196,7 @@ class CHud int MsgFunc_Fog(const char *pszName, int iSize, void *pbuf); float GetSensitivity(); - BHopCap GetBHopCapState(); + EBHopCap GetBHopCapState(); bool IsHTMLEnabled(); /** diff --git a/src/game/client/hud_redraw.cpp b/src/game/client/hud_redraw.cpp index 753840a0..ae1c1af6 100644 --- a/src/game/client/hud_redraw.cpp +++ b/src/game/client/hud_redraw.cpp @@ -97,7 +97,7 @@ void CHud::Think(void) } // Update BHop state - int bhopCapState = (int)GetBHopCapState(); + EBHopCap bhopCapState = GetBHopCapState(); if (PM_GetBHopCapState() != bhopCapState) PM_SetBHopCapState(bhopCapState); diff --git a/src/pm_shared/pm_shared.cpp b/src/pm_shared/pm_shared.cpp index ae205163..46b9e302 100644 --- a/src/pm_shared/pm_shared.cpp +++ b/src/pm_shared/pm_shared.cpp @@ -167,12 +167,12 @@ void PM_SetIsAG(int state) #ifdef CLIENT_DLL -#define BHOP_DETECT_DELAY 0.3f +static constexpr float BHOP_DETECT_DELAY = 0.3f; static int s_iOnGround; static int s_iWaterlevel; static int s_iMoveType; -static int s_iBHopState = 1; +static EBHopCap s_iBHopState = EBHopCap::Enabled; static float s_flBHopCheckTime = 0.0f; int PM_GetOnGround() @@ -190,12 +190,12 @@ int PM_GetMoveType() return s_iMoveType; } -int PM_GetBHopCapState() +EBHopCap PM_GetBHopCapState() { return s_iBHopState; } -void PM_SetBHopCapState(int state) +void PM_SetBHopCapState(EBHopCap state) { s_iBHopState = state; PM_ResetBHopDetection(); @@ -203,7 +203,7 @@ void PM_SetBHopCapState(int state) void PM_ResetBHopDetection() { - if (s_iBHopState == 2) + if (s_iBHopState == EBHopCap::AutoDetect) { // Autodetect s_bBHopCap = false; @@ -2739,9 +2739,9 @@ void PM_Jump(void) // BHop autodetection #ifdef CLIENT_DLL float speed = sqrtf(pmove->velocity[0] * pmove->velocity[0] + pmove->velocity[1] * pmove->velocity[1]); - int isLongJumping = cansuperjump && (pmove->oldbuttons & IN_DUCK); + bool isLongJumping = cansuperjump && (pmove->oldbuttons & IN_DUCK); - if (s_iBHopState == 2 && s_flBHopCheckTime == 0 && speed >= pmove->maxspeed * BUNNYJUMP_MAX_SPEED_FACTOR && !isLongJumping) + if (s_iBHopState == EBHopCap::AutoDetect && s_flBHopCheckTime == 0 && speed >= pmove->maxspeed * BUNNYJUMP_MAX_SPEED_FACTOR && !isLongJumping) { s_flBHopCheckTime = pmove->time + (BHOP_DETECT_DELAY * 1000); } @@ -3496,7 +3496,7 @@ void PM_Move(struct playermove_s *ppmove, int server) #ifdef CLIENT_DLL s_iMoveType = pmove->movetype; - if (s_iBHopState == 2 && s_flBHopCheckTime > 0) + if (s_iBHopState == EBHopCap::AutoDetect && s_flBHopCheckTime > 0) { float speed = sqrtf(pmove->velocity[0] * pmove->velocity[0] + pmove->velocity[1] * pmove->velocity[1]); diff --git a/src/pm_shared/pm_shared.h b/src/pm_shared/pm_shared.h index faa16fe8..4d4b7798 100644 --- a/src/pm_shared/pm_shared.h +++ b/src/pm_shared/pm_shared.h @@ -26,11 +26,21 @@ char PM_FindTextureType(char *name); void PM_SetIsAG(int state); #ifdef CLIENT_DLL +enum class EBHopCap +{ + Disabled = 0, + Enabled = 1, + AutoDetect = 2, + + _Min = Disabled, + _Max = AutoDetect, +}; + int PM_GetOnGround(); int PM_GetWaterLevel(); int PM_GetMoveType(); -int PM_GetBHopCapState(); -void PM_SetBHopCapState(int state); +EBHopCap PM_GetBHopCapState(); +void PM_SetBHopCapState(EBHopCap state); void PM_ResetBHopDetection(); #else int PM_GetBHopCapEnabled();