]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add patch from Juhu/strafehud-fixes branch: "strafehud: improve offsetting of hud...
authorJuhu <5894800-Juhu_@users.noreply.gitlab.com>
Sun, 18 Jul 2021 05:00:09 +0000 (07:00 +0200)
committerJuhu <5894800-Juhu_@users.noreply.gitlab.com>
Sun, 18 Jul 2021 05:00:09 +0000 (07:00 +0200)
qcsrc/client/hud/panel/strafehud.qc

index b55b19e62586309ee0009fb9475f5ffe403d0331..078ed26a4156d4d5e32d56b2dbeef98db2ef5568 100644 (file)
@@ -772,6 +772,13 @@ void HUD_StrafeHUD()
             }
         }
 
+        float angleheight_offset;
+        // don't offset text and arrows if the angle indicator line isn't drawn
+        if(autocvar_hud_panel_strafehud_angle_style == 0 || autocvar_hud_panel_strafehud_angle_style > 2)
+            angleheight_offset = panel_size.y;
+        else
+            angleheight_offset = currentangle_size.y;
+
         if(autocvar_hud_panel_strafehud_angle_alpha * panel_fg_alpha > 0)
         {
             float ghost_offset = 0;
@@ -814,13 +821,13 @@ void HUD_StrafeHUD()
                 {
                     if(autocvar_hud_panel_strafehud_angle_arrow == 1 || autocvar_hud_panel_strafehud_angle_arrow >= 3)
                     {
-                        if(autocvar_hud_panel_strafehud_bestangle && direction != 0) StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - currentangle_size.y) / 2) + eX * ghost_offset, arrow_size, autocvar_hud_panel_strafehud_bestangle_color, autocvar_hud_panel_strafehud_bestangle_alpha * panel_fg_alpha, true);
-                        StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - currentangle_size.y) / 2) + eX * currentangle_offset, arrow_size, currentangle_color, autocvar_hud_panel_strafehud_angle_alpha * panel_fg_alpha, true);
+                        if(autocvar_hud_panel_strafehud_bestangle && direction != 0) StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - angleheight_offset) / 2) + eX * ghost_offset, arrow_size, autocvar_hud_panel_strafehud_bestangle_color, autocvar_hud_panel_strafehud_bestangle_alpha * panel_fg_alpha, true);
+                        StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - angleheight_offset) / 2) + eX * currentangle_offset, arrow_size, currentangle_color, autocvar_hud_panel_strafehud_angle_alpha * panel_fg_alpha, true);
                     }
                     if(autocvar_hud_panel_strafehud_angle_arrow >= 2)
                     {
-                        if(autocvar_hud_panel_strafehud_bestangle && direction != 0) StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - currentangle_size.y) / 2 + currentangle_size.y) + eX * ghost_offset, arrow_size, autocvar_hud_panel_strafehud_bestangle_color, autocvar_hud_panel_strafehud_bestangle_alpha * panel_fg_alpha, false);
-                        StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - currentangle_size.y) / 2 + currentangle_size.y) + eX * currentangle_offset, arrow_size, currentangle_color, autocvar_hud_panel_strafehud_angle_alpha * panel_fg_alpha, false);
+                        if(autocvar_hud_panel_strafehud_bestangle && direction != 0) StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - angleheight_offset) / 2 + angleheight_offset) + eX * ghost_offset, arrow_size, autocvar_hud_panel_strafehud_bestangle_color, autocvar_hud_panel_strafehud_bestangle_alpha * panel_fg_alpha, false);
+                        StrafeHUD_drawStrafeArrow(panel_pos + eY * ((panel_size.y - angleheight_offset) / 2 + angleheight_offset) + eX * currentangle_offset, arrow_size, currentangle_color, autocvar_hud_panel_strafehud_angle_alpha * panel_fg_alpha, false);
                     }
                 }
             }
@@ -856,7 +863,14 @@ void HUD_StrafeHUD()
                 startspeed_size.y *= panel_size.y;
                 if(!autocvar_hud_panel_strafehud_uncapped)
                     startspeed_size.y = max(startspeed_size.y, 1);
-                drawstring_aspect(panel_pos + eY * (panel_size.y + arrow_size + ((currentangle_size.y - panel_size.y) / 2)), strcat(ftos_decimals(startspeed * speed_conversion_factor, 2), autocvar_hud_panel_strafehud_unit_show ? speed_unit : ""), startspeed_size, autocvar_hud_panel_strafehud_startspeed_color, text_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+
+                float text_offset = (angleheight_offset - panel_size.y) / 2;
+                if(autocvar_hud_panel_strafehud_angle_arrow >= 2)
+                    text_offset += arrow_size;
+                // make sure text doesn't draw inside the strafehud bar
+                text_offset = max(text_offset, 0);
+
+                drawstring_aspect(panel_pos + eY * (panel_size.y + text_offset), strcat(ftos_decimals(startspeed * speed_conversion_factor, 2), autocvar_hud_panel_strafehud_unit_show ? speed_unit : ""), startspeed_size, autocvar_hud_panel_strafehud_startspeed_color, text_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
             }
         }
         else
@@ -913,7 +927,14 @@ void HUD_StrafeHUD()
                 jumpheight_size.y *= panel_size.y;
                 if(!autocvar_hud_panel_strafehud_uncapped)
                     jumpheight_size.y = max(jumpheight_size.y, 1);
-                drawstring_aspect(panel_pos - eY * (jumpheight_size.y + arrow_size + ((currentangle_size.y - panel_size.y) / 2)), strcat(ftos_decimals(jumpheight_persistent * length_conversion_factor, length_decimals), autocvar_hud_panel_strafehud_unit_show ? length_unit : ""), jumpheight_size, autocvar_hud_panel_strafehud_jumpheight_color, text_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+
+                float text_offset = (angleheight_offset - panel_size.y) / 2;
+                if(autocvar_hud_panel_strafehud_angle_arrow == 1 || autocvar_hud_panel_strafehud_angle_arrow >= 3)
+                    text_offset += arrow_size;
+                // make sure text doesn't draw inside the strafehud bar
+                text_offset = max(text_offset, 0);
+
+                drawstring_aspect(panel_pos - eY * (jumpheight_size.y + text_offset), strcat(ftos_decimals(jumpheight_persistent * length_conversion_factor, length_decimals), autocvar_hud_panel_strafehud_unit_show ? length_unit : ""), jumpheight_size, autocvar_hud_panel_strafehud_jumpheight_color, text_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
             }
         }
         else