]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/announcer.qc
Draw: purge SELFPARAM
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / announcer.qc
index 35077496911a9ea8f8f56664068d3cd06437e3f0..b7b7bb5c6e5d992c2a8c20ea1e9f8c8bce7332f2 100644 (file)
@@ -1,19 +1,27 @@
-float announcer_1min;
-float announcer_5min;
+#include "announcer.qh"
+#include "_all.qh"
+
+#include "../common/notifications.qh"
+#include "../common/stats.qh"
+#include "../common/util.qh"
+
+bool announcer_1min;
+bool announcer_5min;
 void Announcer_Countdown()
 {
+       SELFPARAM();
        float starttime = getstatf(STAT_GAMESTARTTIME);
        float roundstarttime = getstatf(STAT_ROUNDSTARTTIME);
        if(roundstarttime == -1)
        {
                Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTOP);
-               remove(self);
+               remove(this);
                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
+               announcer_5min = announcer_1min = false; // reset maptime announcers now as well
 
        float countdown = (starttime - time);
        float countdown_rounded = floor(0.5 + countdown);
@@ -22,11 +30,12 @@ void Announcer_Countdown()
        {
                Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_BEGIN);
                Local_Notification(MSG_MULTI, MULTI_COUNTDOWN_BEGIN);
-               remove(self);
+               remove(this);
                return;
        }
        else // countdown is still going
        {
+               // if concomitant countdown to round start overrides countdown to game start
                if(roundstarttime == starttime)
                {
                        Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTART, countdown_rounded);
@@ -38,7 +47,7 @@ void Announcer_Countdown()
                        Local_Notification(MSG_ANNCE, Announcer_PickNumber(CNT_GAMESTART, countdown_rounded));
                }
 
-               self.nextthink = (starttime - (countdown - 1));
+               this.nextthink = (starttime - (countdown - 1));
        }
 }
 
@@ -59,9 +68,6 @@ void Announcer_Gamestart()
 
        if(previous_game_starttime != startTime)
        {
-               if((time + 5.0) < startTime) // if connecting to server while restart was active don't always play prepareforbattle
-                       Local_Notification(MSG_ANNCE, ANNCE_PREPARE);
-
                if(time < startTime)
                {
                        entity e = find(world, classname, "announcer_countdown");
@@ -71,6 +77,11 @@ void Announcer_Gamestart()
                                e.classname = "announcer_countdown";
                                e.think = Announcer_Countdown;
                        }
+
+                       if(time + 5.0 < startTime) // if connecting to server while restart was active don't always play prepareforbattle
+                       if(time > e.nextthink) // don't play it again if countdown was already going
+                               Local_Notification(MSG_ANNCE, ANNCE_PREPARE);
+
                        e.nextthink = startTime - floor(startTime - time); //synchronize nextthink to startTime
                }
        }
@@ -98,7 +109,7 @@ void Announcer_Time()
                {
                        if(((!warmup_stage || autocvar_g_warmup_limit == 0) && timeleft > 300)
                                || (warmup_stage && autocvar_g_warmup_limit > 0 && warmup_timeleft > 300))
-                                       announcer_5min = FALSE;
+                                       announcer_5min = false;
                }
                else
                {
@@ -108,7 +119,7 @@ void Announcer_Time()
                                //if we're in warmup mode, check whether there's a warmup timelimit
                                if(!(autocvar_g_warmup_limit == -1 && warmup_stage))
                                {
-                                       announcer_5min = TRUE;
+                                       announcer_5min = true;
                                        Local_Notification(MSG_ANNCE, ANNCE_REMAINING_MIN_5);
                                }
                        }
@@ -122,7 +133,7 @@ void Announcer_Time()
                {
                        if(((!warmup_stage || autocvar_g_warmup_limit == 0) && timeleft > 60)
                                || (warmup_stage && autocvar_g_warmup_limit > 0 && warmup_timeleft > 60))
-                                       announcer_1min = FALSE;
+                                       announcer_1min = false;
                }
                else if(((!warmup_stage || autocvar_g_warmup_limit == 0) && timelimit > 0 && timeleft < 60)
                        || (warmup_stage && autocvar_g_warmup_limit > 0 && warmup_timeleft < 60))
@@ -130,7 +141,7 @@ void Announcer_Time()
                        // if we're in warmup mode, check whether there's a warmup timelimit
                        if(!(autocvar_g_warmup_limit == -1 && warmup_stage))
                        {
-                               announcer_1min = TRUE;
+                               announcer_1min = true;
                                Local_Notification(MSG_ANNCE, ANNCE_REMAINING_MIN_1);
                        }
                }