]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add speed comparison with speed in previous best cp time.
authorDes <xon@damianv.com.ar>
Wed, 4 Sep 2024 13:45:40 +0000 (10:45 -0300)
committerDes <xon@damianv.com.ar>
Wed, 4 Sep 2024 13:45:40 +0000 (10:45 -0300)
qcsrc/client/hud/panel/racetimer.qc
qcsrc/client/hud/panel/racetimer.qh

index b79b76cb640967fb25200d38fd793a3070f9523c..04544683a0d61564e6fe43ef6460d942c7daba9e 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <client/draw.qh>
 #include <common/ent_cs.qh>
+#include <lib/csqcmodel/cl_player.qh>
 
 // used for caching the string after passing through a checkpoint
 float racetimer_lastcheckpoint;
@@ -217,12 +218,21 @@ void HUD_RaceTimer ()
                                }
                                else
                                {
-                                       float speed_conversion_factor;
                                        string speed_text = string_null;
                                        if(autocvar_cl_race_cptimes_showspeed)
                                        {
-                                               speed_conversion_factor = GetSpeedUnitFactor(autocvar_hud_speed_unit);
-                                               speed_text = sprintf(" @%d%s",vlen(vec2(csqcplayer.velocity)) * speed_conversion_factor, autocvar_cl_race_cptimes_showspeed_unit ? GetSpeedUnit(autocvar_hud_speed_unit) : "");
+                                               string speed_color = "^xf73";
+                                               float speed_conversion_factor = GetSpeedUnitFactor(autocvar_hud_speed_unit);;
+                                               float speed = vlen(vec2(csqcplayer.velocity));
+                                               float speed_diff = speed - race_checkpoint_splits_speed[race_checkpoint] ;
+                                               string units_text = autocvar_cl_race_cptimes_showspeed_unit ? GetSpeedUnit(autocvar_hud_speed_unit) : "";
+                                               if(speed_diff > 0) speed_color = "^x66f";
+                                               else if (speed_diff == 0) speed_color = "^3";
+                                               if((TIME_DECODE(race_time) - TIME_DECODE(race_previousbesttime)) < 0 || !race_checkpoint_splits_speed[race_checkpoint])
+                                               {
+                                                       race_checkpoint_splits_speed[race_checkpoint] = speed;
+                                               }
+                                               speed_text = sprintf(" ^7%d%s %s(%+d%s)", speed * speed_conversion_factor, units_text, speed_color, speed_diff, units_text);
                                        }
                                        // build checkpoint split strings
                                        if(race_time && race_previousbesttime)
index d213584df1eb74b437d3fb12a8ad76a6f8a227fc..934e42f336eb596fd8aa52f2e6ba0392f6c16d64 100644 (file)
@@ -10,6 +10,7 @@ float race_time;
 float race_laptime;
 float race_checkpointtime;
 string race_checkpoint_splits[256];
+float race_checkpoint_splits_speed[256];
 float race_previousbesttime;
 float race_mypreviousbesttime;
 string race_previousbestname;