X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fannouncer.qc;h=51c67ccabe53d9a0d25eef6cc8a41f2317bd5a0a;hb=3aed354c1125db3e6e862f552c253b06b09d5d86;hp=be2f8734c04594f9833ece10990b4f812824118f;hpb=3740af03242d8fcfb243395da8ff071a43f3ae53;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/announcer.qc b/qcsrc/client/announcer.qc index be2f8734c..51c67ccab 100644 --- a/qcsrc/client/announcer.qc +++ b/qcsrc/client/announcer.qc @@ -12,32 +12,46 @@ void Announcer_Play(string announcement) { sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/", announcement, ".wav"), VOL_BASEVOICE, ATTN_NONE); - previous_announcement = announcement; + if(previous_announcement) { strunzone(previous_announcement); } + + previous_announcement = strzone(announcement); previous_announcement_time = time; } - print(strcat("announcement: '", announcement, "' at time: ", ftos(time), ". \n")); } void Announcer_Countdown() { float starttime = getstatf(STAT_GAMESTARTTIME); + float roundstarttime = getstatf(STAT_ROUNDSTARTTIME); + if(roundstarttime == -1) + { + // stop countdown immediately + centerprint_generic(CPID_GAME_STARTING, "", 1, 0); + remove(self); + 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); float countdown_rounded = floor(0.5 + countdown); - + if(countdown <= 0) // countdown has finished, starttime is now { - if (!spectatee_status) - centerprint_generic(CPID_GAME_STARTING, _("^1Begin!"), 1, 0); + Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_BEGIN); Announcer_Play("begin"); - announcer_5min = announcer_1min = FALSE; // reset maptime announcers now as well remove(self); return; } else // countdown is still going { - if (!spectatee_status) - centerprint_generic(CPID_GAME_STARTING, _("^1Game starts in %d seconds"), 1, countdown_rounded); + if(roundstarttime == starttime) + centerprint_generic(CPID_GAME_STARTING, _("^1Round starts in %d seconds"), 1, countdown_rounded); + else + Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_GAMESTART, countdown_rounded); if(countdown_rounded <= 3 && countdown_rounded >= 1) Announcer_Play(ftos(countdown_rounded)); @@ -56,12 +70,15 @@ void Announcer_Countdown() void Announcer_Gamestart() { float startTime = getstatf(STAT_GAMESTARTTIME); - + float roundstarttime = getstatf(STAT_ROUNDSTARTTIME); + if(roundstarttime > startTime) + startTime = roundstarttime; + if(previous_game_starttime != startTime) { if((time + 5.0) < startTime) // if connecting to server while restart was active don't always play prepareforbattle Announcer_Play("prepareforbattle"); - + if(time < startTime) { entity e; @@ -80,7 +97,7 @@ void Announcer_Time() { float timelimit = getstatf(STAT_TIMELIMIT); float timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time); - float warmup_timeleft; + float warmup_timeleft = 0; if(warmup_stage) if(autocvar_g_warmup_limit > 0) @@ -133,52 +150,10 @@ void Announcer_Time() } } -float redflag_prev; -float blueflag_prev; -void carrierAnnouncer() { - float stat_items, redflag, blueflag; - float pickup; - string item; - - if not(autocvar_cl_notify_carried_items) - return; - - stat_items = getstati(STAT_ITEMS); - - redflag = (stat_items/IT_RED_FLAG_TAKEN) & 3; - blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3; - - if (redflag == 3 && redflag != redflag_prev) { - item = _("^1RED^7 flag"); - pickup = (redflag_prev == 2); - } - - if (blueflag == 3 && blueflag != blueflag_prev) { - item = _("^4BLUE^7 flag"); - pickup = (blueflag_prev == 2); - } - - if (item) - { - if (pickup) { - if (autocvar_cl_notify_carried_items & 2) - centerprint(sprintf(_("You picked up the %s!"), item)); - } - else { - if (autocvar_cl_notify_carried_items & 1) - centerprint(sprintf(_("You got the %s!"), item)); - } - } - - blueflag_prev = blueflag; - redflag_prev = redflag; -} - void Announcer() { Announcer_Gamestart(); Announcer_Time(); - carrierAnnouncer(); } void Announcer_Precache () @@ -199,7 +174,6 @@ void Announcer_Precache () precache_sound (strcat("announcer/", autocvar_cl_announcer, "/yoda.wav")); precache_sound (strcat("announcer/", autocvar_cl_announcer, "/amazing.wav")); precache_sound (strcat("announcer/", autocvar_cl_announcer, "/awesome.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/headshot.wav")); precache_sound (strcat("announcer/", autocvar_cl_announcer, "/impressive.wav")); precache_sound (strcat("announcer/", autocvar_cl_announcer, "/prepareforbattle.wav")); @@ -227,4 +201,4 @@ void Announcer_Precache () precache_sound (strcat("announcer/", autocvar_cl_announcer, "/voteaccept.wav")); precache_sound (strcat("announcer/", autocvar_cl_announcer, "/votecall.wav")); precache_sound (strcat("announcer/", autocvar_cl_announcer, "/votefail.wav")); -} \ No newline at end of file +}