-float announcer_1min;
-float announcer_5min;
+#include "announcer.qh"
+
+#include "mutators/events.qh"
+
+#include "../common/notifications.qh"
+#include "../common/stats.qh"
+
+bool announcer_1min;
+bool announcer_5min;
+string AnnouncerOption()
+{
+ string ret = autocvar_cl_announcer;
+ MUTATOR_CALLHOOK(AnnouncerOption, ret);
+ ret = ret_string;
+ return ret;
+}
+
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);
{
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);
Local_Notification(MSG_ANNCE, Announcer_PickNumber(CNT_GAMESTART, countdown_rounded));
}
- self.nextthink = (starttime - (countdown - 1));
+ this.nextthink = (starttime - (countdown - 1));
}
}
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");
- if (!e)
+ static entity announcer_countdown;
+ if (!announcer_countdown)
{
- e = spawn();
- e.classname = "announcer_countdown";
- e.think = Announcer_Countdown;
+ announcer_countdown = new(announcer_countdown);
+ announcer_countdown.think = Announcer_Countdown;
}
- e.nextthink = startTime - floor(startTime - time); //synchronize nextthink to startTime
+
+ if(time + 5.0 < startTime) // if connecting to server while restart was active don't always play prepareforbattle
+ if(time > announcer_countdown.nextthink) // don't play it again if countdown was already going
+ Local_Notification(MSG_ANNCE, ANNCE_PREPARE);
+
+ announcer_countdown.nextthink = startTime - floor(startTime - time); //synchronize nextthink to startTime
}
}
{
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
{
//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);
}
}
{
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))
// 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);
}
}