From f2e0d5e49e075863fcba25c5c7946be054d0532e Mon Sep 17 00:00:00 2001 From: Juhu <5894800-Juhu_@users.noreply.gitlab.com> Date: Sun, 12 Jan 2025 02:12:43 +0100 Subject: [PATCH] strafehud: simplify some gradient related code and remove obsolete project_width parameter --- qcsrc/client/hud/panel/strafehud.qc | 2 +- qcsrc/client/hud/panel/strafehud/core.qc | 12 ++++++------ qcsrc/client/hud/panel/strafehud/draw.qc | 21 +++++++++++---------- qcsrc/client/hud/panel/strafehud/draw.qh | 3 ++- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/qcsrc/client/hud/panel/strafehud.qc b/qcsrc/client/hud/panel/strafehud.qc index 62b3911dd..050c4c28f 100644 --- a/qcsrc/client/hud/panel/strafehud.qc +++ b/qcsrc/client/hud/panel/strafehud.qc @@ -579,7 +579,7 @@ void HUD_StrafeHUD() strafe_ratio = (moveangle - absolute_prebestangle) / (absolute_bestangle - absolute_prebestangle); } - if(autocvar_hud_panel_strafehud_style == STRAFEHUD_STYLE_GRADIENT || autocvar_hud_panel_strafehud_style == STRAFEHUD_STYLE_SOFT_GRADIENT) + if(StrafeHUD_IsGradient(autocvar_hud_panel_strafehud_style)) currentangle_color = StrafeHUD_MixColors( autocvar_hud_panel_strafehud_angle_neutral_color, currentangle_color, fabs(strafe_ratio)); diff --git a/qcsrc/client/hud/panel/strafehud/core.qc b/qcsrc/client/hud/panel/strafehud/core.qc index 94058f76a..2731552e5 100644 --- a/qcsrc/client/hud/panel/strafehud/core.qc +++ b/qcsrc/client/hud/panel/strafehud/core.qc @@ -90,7 +90,7 @@ void StrafeHUD_DrawStrafeMeter( autocvar_hud_panel_strafehud_bar_accel_color, autocvar_hud_panel_strafehud_bar_accel_alpha * panel_fg_alpha, autocvar_hud_panel_strafehud_style, STRAFEHUD_GRADIENT_LEFT, - true, hudangle); + hudangle); if(autocvar_hud_panel_strafehud_bar_preaccel && preaccelzone_offsetangle > 0) StrafeHUD_DrawStrafeHUD( @@ -98,7 +98,7 @@ void StrafeHUD_DrawStrafeMeter( autocvar_hud_panel_strafehud_bar_preaccel_color, autocvar_hud_panel_strafehud_bar_preaccel_alpha * panel_fg_alpha, autocvar_hud_panel_strafehud_style, STRAFEHUD_GRADIENT_RIGHT, - true, hudangle); + hudangle); // draw right acceleration zone if(accelzone_offsetangle > 0) @@ -107,7 +107,7 @@ void StrafeHUD_DrawStrafeMeter( autocvar_hud_panel_strafehud_bar_accel_color, autocvar_hud_panel_strafehud_bar_accel_alpha * panel_fg_alpha, autocvar_hud_panel_strafehud_style, STRAFEHUD_GRADIENT_RIGHT, - true, hudangle); + hudangle); if(autocvar_hud_panel_strafehud_bar_preaccel && preaccelzone_offsetangle > 0) StrafeHUD_DrawStrafeHUD( @@ -115,7 +115,7 @@ void StrafeHUD_DrawStrafeMeter( autocvar_hud_panel_strafehud_bar_preaccel_color, autocvar_hud_panel_strafehud_bar_preaccel_alpha * panel_fg_alpha, autocvar_hud_panel_strafehud_style, STRAFEHUD_GRADIENT_LEFT, - true, hudangle); + hudangle); // draw overturn zone if(overturn_offsetangle > 0) @@ -124,7 +124,7 @@ void StrafeHUD_DrawStrafeMeter( autocvar_hud_panel_strafehud_bar_overturn_color, autocvar_hud_panel_strafehud_bar_overturn_alpha * panel_fg_alpha, autocvar_hud_panel_strafehud_style, STRAFEHUD_GRADIENT_BOTH, - true, hudangle); + hudangle); // draw neutral zone if(neutral_offsetangle > 0) @@ -133,7 +133,7 @@ void StrafeHUD_DrawStrafeMeter( autocvar_hud_panel_strafehud_bar_neutral_color, autocvar_hud_panel_strafehud_bar_neutral_alpha * panel_fg_alpha, autocvar_hud_panel_strafehud_style, STRAFEHUD_GRADIENT_NONE, - true, hudangle); + hudangle); } } diff --git a/qcsrc/client/hud/panel/strafehud/draw.qc b/qcsrc/client/hud/panel/strafehud/draw.qc index 9fec07fb5..31fa5aca2 100644 --- a/qcsrc/client/hud/panel/strafehud/draw.qc +++ b/qcsrc/client/hud/panel/strafehud/draw.qc @@ -5,21 +5,17 @@ // draw the strafe-o-meter bar // aligns HUD elements perfectly in the hud area // also deals with wrapping around on edges, different HUD styles, etc -void StrafeHUD_DrawStrafeHUD(float startangle, float offsetangle, vector color, float alpha, int type, int gradient_type, bool project_width, float range) +void StrafeHUD_DrawStrafeHUD(float startangle, float offsetangle, vector color, float alpha, int type, int gradient_type, float range) { float offset = StrafeHUD_AngleToOffset(startangle % 360, range); float width = StrafeHUD_AngleToWidth(offsetangle, range); float mirror_offset; float mirror_width; - if(type == STRAFEHUD_STYLE_SOFT_GRADIENT) - { - project_width = true; // must be fully projected for software gradients - if(gradient_type == STRAFEHUD_GRADIENT_NONE) - type = STRAFEHUD_STYLE_DRAWFILL; - } + if(StrafeHUD_IsGradient(type) && gradient_type == STRAFEHUD_GRADIENT_NONE) + type = STRAFEHUD_STYLE_DRAWFILL; - if(alpha <= 0 && type != STRAFEHUD_STYLE_GRADIENT && type != STRAFEHUD_STYLE_SOFT_GRADIENT || width <= 0) + if(alpha <= 0 && !StrafeHUD_IsGradient(type) || width <= 0) return; // how much is hidden by the current hud angle @@ -56,7 +52,7 @@ void StrafeHUD_DrawStrafeHUD(float startangle, float offsetangle, vector color, // the accelerated gradient does the projection later if(type != STRAFEHUD_STYLE_GRADIENT) { - if(project_width && size.x > 0) + if(size.x > 0) size.x = StrafeHUD_ProjectWidth(offset, size.x, range); offset = StrafeHUD_ProjectOffset(offset, range, false); @@ -83,7 +79,7 @@ void StrafeHUD_DrawStrafeHUD(float startangle, float offsetangle, vector color, // the accelerated gradient does the projection later if(type != STRAFEHUD_STYLE_GRADIENT) { - if(project_width && mirror_size.x > 0) + if(mirror_size.x > 0) mirror_size.x = StrafeHUD_ProjectWidth(mirror_offset, mirror_size.x, range); mirror_offset = StrafeHUD_ProjectOffset(mirror_offset, range, false); @@ -326,3 +322,8 @@ vector StrafeHUD_CalculateTextIndicatorPosition(vector pos) return pos; } + +bool StrafeHUD_IsGradient(int style) +{ + return style == STRAFEHUD_STYLE_GRADIENT || style == STRAFEHUD_STYLE_SOFT_GRADIENT; +} diff --git a/qcsrc/client/hud/panel/strafehud/draw.qh b/qcsrc/client/hud/panel/strafehud/draw.qh index d7412e41f..329237edc 100644 --- a/qcsrc/client/hud/panel/strafehud/draw.qh +++ b/qcsrc/client/hud/panel/strafehud/draw.qh @@ -1,9 +1,10 @@ #pragma once #include "../strafehud.qh" -void StrafeHUD_DrawStrafeHUD(float, float, vector, float, int, int, bool, float); +void StrafeHUD_DrawStrafeHUD(float, float, vector, float, int, int, float); void StrafeHUD_DrawGradient(vector, vector, vector, float, float, float, float, int, float); void StrafeHUD_DrawSoftGradient(vector, vector, vector, float, float, float, float, float, int, float); void StrafeHUD_DrawStrafeArrow(vector, float, vector, float, bool, float); void StrafeHUD_DrawTextIndicator(string, float, vector, float, float, vector, float, float); vector StrafeHUD_CalculateTextIndicatorPosition(vector); +bool StrafeHUD_IsGradient(int); -- 2.39.5