]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/panel/timer.qc
Merge branch 'master' into terencehill/replicatevars_enhancements
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / timer.qc
index 8bb4ade6a17f49aca0f69be10c5ffa303069af2f..f70e5a2805962a43cbebc48607f65b80d27cda8b 100644 (file)
@@ -1,8 +1,7 @@
 #include "timer.qh"
 
-#include <client/autocvars.qh>
-#include <client/defs.qh>
-#include <client/miscfunctions.qh>
+#include <client/draw.qh>
+#include <client/view.qh>
 
 // Timer (#5)
 
@@ -42,7 +41,11 @@ void HUD_Timer()
 
        timelimit = STAT(TIMELIMIT);
 
-       timeleft = max(0, timelimit * 60 + STAT(GAMESTARTTIME) - time);
+       if (autocvar_hud_panel_timer_unbound){
+               timeleft = max(0, timelimit * 60 + STAT(GAMESTARTTIME) - time);
+       } else {
+               timeleft = bound(0, timelimit * 60 + STAT(GAMESTARTTIME) - time, timelimit * 60);
+       }
        timeleft = ceil(timeleft);
 
        minutesLeft = floor(timeleft / 60);
@@ -52,7 +55,7 @@ void HUD_Timer()
        {
                float warmup_timelimit = STAT(WARMUP_TIMELIMIT);
                if(warmup_timelimit > 0)
-                       warmup_timeleft = max(0, warmup_timelimit - time);
+                       warmup_timeleft = max(0, warmup_timelimit - time + STAT(GAMESTARTTIME));
                else if(warmup_timelimit == 0)
                        warmup_timeleft = timeleft;
                warmup_timeleft = ceil(warmup_timeleft);
@@ -72,7 +75,11 @@ void HUD_Timer()
                timer = _("WARMUP");
        } else if (autocvar_hud_panel_timer_increment || (!warmup_stage && timelimit == 0) || (warmup_stage && warmup_timeleft <= 0)) {
                if (time < STAT(GAMESTARTTIME))
-                       timer = seconds_tostring(0); //while restart is still active, show 00:00
+                       if (autocvar_hud_panel_timer_unbound){
+                               timer = seconds_tostring(-(STAT(GAMESTARTTIME) - time));
+                       } else {
+                               timer = seconds_tostring(0); //while restart is still active, show 00:00
+                       }
                else
                        timer = seconds_tostring(floor(time - STAT(GAMESTARTTIME)));
        } else {