]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix countdown centerprint for round-based modes
authorz411 <z411@omaera.org>
Sun, 5 Dec 2021 00:09:50 +0000 (21:09 -0300)
committerz411 <z411@omaera.org>
Sun, 5 Dec 2021 00:09:50 +0000 (21:09 -0300)
qcsrc/client/announcer.qc

index a5b3eecb113348059da3013953e4697ff5b18a42..a0e9b294cd5dec80ca358a709ae50d1ca7f53ca3 100644 (file)
@@ -28,12 +28,11 @@ void Announcer_Countdown(entity this)
                announcer_countdown = NULL;
                return;
        }
-       if(roundstarttime >= starttime)
-               starttime = roundstarttime;
        if(starttime <= time && roundstarttime != starttime) // game start time has passed
                announcer_5min = announcer_1min = false; // reset maptime announcers now as well
 
-       float countdown = (starttime - time);
+       bool inround = (roundstarttime && time >= starttime);
+       float countdown = (inround ? roundstarttime - time : starttime - time);
        float countdown_rounded = floor(0.5 + countdown);
 
        if(countdown <= 0) // countdown has finished, starttime is now
@@ -47,22 +46,22 @@ void Announcer_Countdown(entity this)
        else // countdown is still going
        {
                // if concomitant countdown to round start overrides countdown to game start
-               if(roundstarttime == starttime)
+               if(inround)
                {
                        Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTART, countdown_rounded);
                        Notification annce_num = Announcer_PickNumber(CNT_ROUNDSTART, countdown_rounded);
                        if(annce_num != NULL)
                                Local_Notification(MSG_ANNCE, annce_num);
+                       this.nextthink = (roundstarttime - (countdown - 1));
                }
                else
                {
                        Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_GAMESTART, countdown_rounded);
                        Notification annce_num = Announcer_PickNumber(CNT_GAMESTART, countdown_rounded);
-                       if(annce_num != NULL)
+                       if(!roundstarttime && annce_num != NULL) // Don't announce game start in round based modes
                                Local_Notification(MSG_ANNCE, annce_num);
+                       this.nextthink = (starttime - (countdown - 1));
                }
-
-               this.nextthink = (starttime - (countdown - 1));
        }
 }