]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
strafehud: simplify some gradient related code and remove obsolete project_width...
authorJuhu <5894800-Juhu_@users.noreply.gitlab.com>
Sun, 12 Jan 2025 01:12:43 +0000 (02:12 +0100)
committerJuhu <5894800-Juhu_@users.noreply.gitlab.com>
Sun, 12 Jan 2025 01:12:43 +0000 (02:12 +0100)
qcsrc/client/hud/panel/strafehud.qc
qcsrc/client/hud/panel/strafehud/core.qc
qcsrc/client/hud/panel/strafehud/draw.qc
qcsrc/client/hud/panel/strafehud/draw.qh

index 62b3911dd03833dcb32ac61e0cca81a4c6c5d8dc..050c4c28f412c2152a59fb0e2a477fa34f3b8292 100644 (file)
@@ -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));
index 94058f76a6ec099f74702a163e2f15be4d3ff7ce..2731552e5f9469cc437ec69f30b44e0aff3f6804 100644 (file)
@@ -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);
        }
 }
 
index 9fec07fb55830cb21986245e1b586708342ef5bc..31fa5aca2a01cbd0c6bfbf04dc250460097db170 100644 (file)
@@ -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;
+}
index d7412e41f1b7ec04f3d9033bde7bdf4589e715e2..329237edc7eee60af5f3ed955e8f537bed60f18f 100644 (file)
@@ -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);