X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fannouncer.qc;h=016c87f326d298db2debceaeeb6688f8bc9670d0;hb=be4b364c5f9bcc722170b51bb802477288aea913;hp=fa8f2b0055b51395ed0248ae4129cc1e741d55fa;hpb=c741e6b3f012aa525f23e1df30d1d933b383fbc5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/announcer.qc b/qcsrc/client/announcer.qc index fa8f2b005..016c87f32 100644 --- a/qcsrc/client/announcer.qc +++ b/qcsrc/client/announcer.qc @@ -2,8 +2,8 @@ #include "mutators/events.qh" -#include "../common/notifications.qh" -#include "../common/stats.qh" +#include +#include bool announcer_1min; bool announcer_5min; @@ -15,15 +15,18 @@ string AnnouncerOption() return ret; } +entity announcer_countdown; + void Announcer_Countdown() { SELFPARAM(); float starttime = STAT(GAMESTARTTIME); - float roundstarttime = getstatf(STAT_ROUNDSTARTTIME); + float roundstarttime = STAT(ROUNDSTARTTIME); if(roundstarttime == -1) { Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTOP); remove(this); + announcer_countdown = NULL; return; } if(roundstarttime >= starttime) @@ -39,6 +42,7 @@ void Announcer_Countdown() Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_BEGIN); Local_Notification(MSG_MULTI, MULTI_COUNTDOWN_BEGIN); remove(this); + announcer_countdown = NULL; return; } else // countdown is still going @@ -47,12 +51,16 @@ void Announcer_Countdown() if(roundstarttime == starttime) { Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTART, countdown_rounded); - Local_Notification(MSG_ANNCE, Announcer_PickNumber(CNT_ROUNDSTART, countdown_rounded)); + Notification annce_num = Announcer_PickNumber(CNT_ROUNDSTART, countdown_rounded); + if(annce_num != NULL) + Local_Notification(MSG_ANNCE, annce_num); } else { Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_GAMESTART, countdown_rounded); - Local_Notification(MSG_ANNCE, Announcer_PickNumber(CNT_GAMESTART, countdown_rounded)); + Notification annce_num = Announcer_PickNumber(CNT_GAMESTART, countdown_rounded); + if(annce_num != NULL) + Local_Notification(MSG_ANNCE, Announcer_PickNumber(CNT_GAMESTART, countdown_rounded)); } this.nextthink = (starttime - (countdown - 1)); @@ -70,15 +78,27 @@ void Announcer_Countdown() void Announcer_Gamestart() { float startTime = STAT(GAMESTARTTIME); - float roundstarttime = getstatf(STAT_ROUNDSTARTTIME); + float roundstarttime = STAT(ROUNDSTARTTIME); if(roundstarttime > startTime) startTime = roundstarttime; + if(intermission) + { + if(announcer_countdown) + { + centerprint_kill(ORDINAL(CPID_ROUND)); + if(announcer_countdown) + { + remove(announcer_countdown); + announcer_countdown = NULL; + } + } + return; + } if(previous_game_starttime != startTime) { if(time < startTime) { - static entity announcer_countdown; if (!announcer_countdown) { announcer_countdown = new(announcer_countdown); @@ -100,7 +120,7 @@ void Announcer_Gamestart() // Plays the 1 minute or 5 minutes (of maptime) remaining sound, if client wants it void Announcer_Time() { - float timelimit = getstatf(STAT_TIMELIMIT); + float timelimit = STAT(TIMELIMIT); float timeleft = max(0, timelimit * 60 + STAT(GAMESTARTTIME) - time); float warmup_timeleft = 0;