]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
strafehud: make sonar sound interval dynamic too
authorJuhu <5894800-Juhu_@users.noreply.gitlab.com>
Wed, 18 Jan 2023 12:07:42 +0000 (13:07 +0100)
committerJuhu <5894800-Juhu_@users.noreply.gitlab.com>
Tue, 4 Apr 2023 16:55:49 +0000 (18:55 +0200)
_hud_common.cfg
qcsrc/client/hud/panel/strafehud.qc
qcsrc/client/hud/panel/strafehud.qh

index a854eec1e02f9d358b0265042d54574504d20a69..655dae3d5a0a17f6df2a356b8b678ecd0baed774 100644 (file)
@@ -212,7 +212,8 @@ seta hud_panel_strafehud_fps_update "0.5" "update interval (in seconds) of the f
 seta hud_panel_strafehud_sonar "0" "set to \"1\" to enable the strafe sonar"
 seta hud_panel_strafehud_sonar_audio "misc/talk" "audio to play for sonar"
 seta hud_panel_strafehud_sonar_start "0.5" "how optimal from 0 to 1 your strafing angle has to be for the strafe sonar to activate"
-seta hud_panel_strafehud_sonar_interval "0.333333" "strafe sonar sound interval in seconds"
+seta hud_panel_strafehud_sonar_interval_start "0.333333" "strafe sonar sound interval in seconds"
+seta hud_panel_strafehud_sonar_interval_range "-0.222222" "dynamic sound interval range in seconds of the strafe sonar as you approach the optimal angle"
 seta hud_panel_strafehud_sonar_volume_start "0.333333" "sound volume of the strafe sonar"
 seta hud_panel_strafehud_sonar_volume_range "0.666666" "dynamic volume range of the strafe sonar as you approach the optimal angle"
 seta hud_panel_strafehud_sonar_pitch_start "0.9" "playback speed of the strafe sonar"
index e0f6a0573977e2f5d7b0f0a620e89d249e981911..e6f03dfa12b61d5970bec5dd860df4e15e8dbf56 100644 (file)
@@ -928,29 +928,29 @@ void HUD_StrafeHUD()
 
                        // reuse strafe ratio for strafe sonar
                        static float sonar_time = 0;
-                       bool sonar_ready = ((time - sonar_time) >= autocvar_hud_panel_strafehud_sonar_interval) || (sonar_time == 0);
-                       if(autocvar_hud_panel_strafehud_sonar && sonar_ready)
-                       {
-                               float sonar_start = bound(0, autocvar_hud_panel_strafehud_sonar_start, 1);
-                               if(strafe_ratio >= sonar_start)
-                               {
-                                       sonar_time = time;
 
-                                       float sonar_ratio = strafe_ratio - sonar_start;
-                                       if(sonar_start != 1)
-                                               sonar_ratio /= 1 - sonar_start;
-                                       else
-                                               sonar_ratio = 1;
+                       float sonar_start = bound(0, autocvar_hud_panel_strafehud_sonar_start, 1);
+                       float sonar_ratio = strafe_ratio - sonar_start;
+                       if(sonar_start != 1)
+                               sonar_ratio /= 1 - sonar_start;
+                       else
+                               sonar_ratio = 1;
 
-                                       float sonar_volume = bound(0, autocvar_hud_panel_strafehud_sonar_volume_start, 1);
-                                       sonar_volume += autocvar_hud_panel_strafehud_sonar_volume_range * sonar_ratio;
+                       float sonar_interval = max(0, autocvar_hud_panel_strafehud_sonar_interval_start);
+                       sonar_interval += autocvar_hud_panel_strafehud_sonar_interval_range * sonar_ratio;
+                       bool sonar_ready = (sonar_time == 0) || ((time - sonar_time) >= sonar_interval);
+                       if(autocvar_hud_panel_strafehud_sonar && sonar_ready && (strafe_ratio >= sonar_start))
+                       {
+                               sonar_time = time;
 
-                                       float sonar_pitch = max(0, autocvar_hud_panel_strafehud_sonar_pitch_start);
-                                       sonar_pitch += autocvar_hud_panel_strafehud_sonar_pitch_range * sonar_ratio;
+                               float sonar_volume = bound(0, autocvar_hud_panel_strafehud_sonar_volume_start, 1);
+                               sonar_volume += autocvar_hud_panel_strafehud_sonar_volume_range * sonar_ratio;
 
-                                       if(sonar_volume > 0)
-                                               sound7(csqcplayer, CH_INFO, sonarsound, bound(0, sonar_volume, 1) * VOL_BASE, ATTN_NONE, max(0.000001, sonar_pitch * 100), 0);
-                               }
+                               float sonar_pitch = max(0, autocvar_hud_panel_strafehud_sonar_pitch_start);
+                               sonar_pitch += autocvar_hud_panel_strafehud_sonar_pitch_range * sonar_ratio;
+
+                               if(sonar_volume > 0)
+                                       sound7(csqcplayer, CH_INFO, sonarsound, bound(0, sonar_volume, 1) * VOL_BASE, ATTN_NONE, max(0.000001, sonar_pitch * 100), 0);
                        }
                }
 
index 81836ae19fa0ebbbe3b88904933f37f457416eac..ba5ae58f66337caf7fa1b88c7529f9ee4bab2952 100644 (file)
@@ -61,7 +61,8 @@ float autocvar_hud_panel_strafehud_fps_update = 0.5;
 bool autocvar_hud_panel_strafehud_sonar = false;
 string autocvar_hud_panel_strafehud_sonar_audio = "misc/talk";
 float autocvar_hud_panel_strafehud_sonar_start = 0.5;
-float autocvar_hud_panel_strafehud_sonar_interval = 0.333333;
+float autocvar_hud_panel_strafehud_sonar_interval_start = 0.333333;
+float autocvar_hud_panel_strafehud_sonar_interval_range = -0.222222;
 float autocvar_hud_panel_strafehud_sonar_volume_start = 0.333333;
 float autocvar_hud_panel_strafehud_sonar_volume_range = 0.666666;
 float autocvar_hud_panel_strafehud_sonar_pitch_start = 0.9;