From 0f47555bc74d94597aa8f1c54db9171fd55aa276 Mon Sep 17 00:00:00 2001 From: pierow Date: Wed, 7 Jul 2021 18:02:11 -0400 Subject: [PATCH] cl_widescreen exploit prevention --- main/source/cl_dll/chud.h | 1 + main/source/cl_dll/hud_update.cpp | 46 +++++++++++++++++-------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/main/source/cl_dll/chud.h b/main/source/cl_dll/chud.h index 430e0f80..a3715e1b 100644 --- a/main/source/cl_dll/chud.h +++ b/main/source/cl_dll/chud.h @@ -17,6 +17,7 @@ private: int m_iSpriteCount; int m_iSpriteCountAllRes; float m_flMouseSensitivity; + bool wstoggle; public: diff --git a/main/source/cl_dll/hud_update.cpp b/main/source/cl_dll/hud_update.cpp index 5f874908..7ae6be42 100644 --- a/main/source/cl_dll/hud_update.cpp +++ b/main/source/cl_dll/hud_update.cpp @@ -46,29 +46,35 @@ int CHud::UpdateClientData(client_data_t *cdata, float time) float width = ScreenWidth(); float height = ScreenHeight(); - //horizontal+ widescreen view correction - engine uses vertical- - bool wstoggle = CVAR_GET_FLOAT("cl_widescreen") != 0; + // Horizontal+ widescreen view correction - engine uses vertical- cropping + + // Cvar to let players use old widescreen. Only allow it to change when not alive so it can't be used as a zoom toggle. + if (!gHUD.GetIsAlive(false)) + { + wstoggle = CVAR_GET_FLOAT("cl_widescreen") != 0; + } + if (wstoggle) { - m_wsFOV = atanf(tan(m_iFOV * M_PI / 360) * 0.75 * width / height) * 360 / M_PI; + m_wsFOV = atanf(tan(m_iFOV * M_PI / 360) * 0.75 * width / height) * 360 / M_PI; - //clamp for game balance - if (m_iFOV == 105 && m_wsFOV > 121) - { - m_wsFOV = 120; - } - else if (m_iFOV == 100 && m_wsFOV > 117) - { - m_wsFOV = 116; - } - else if (m_iFOV == 90 && m_wsFOV > 107) - { - m_wsFOV = 106; - } - else if (m_wsFOV < 90) - { - m_wsFOV = 90; - } + //clamp for game balance + if (m_iFOV == 105 && m_wsFOV > 121) + { + m_wsFOV = 120; + } + else if (m_iFOV == 100 && m_wsFOV > 117) + { + m_wsFOV = 116; + } + else if (m_iFOV == 90 && m_wsFOV > 107) + { + m_wsFOV = 106; + } + else if (m_wsFOV < 90) + { + m_wsFOV = 90; + } } else {