From f67a36b2ce03e992e1bd9f708422a1d0793e8228 Mon Sep 17 00:00:00 2001 From: Samual Date: Tue, 18 Oct 2011 01:55:02 -0400 Subject: [PATCH] Move the announcer code to new file (out of miscfunctions.qc) in preparation for major updates to how it works. --- qcsrc/client/announcer.qc | 182 +++++++++++++++++++++++++++++++++ qcsrc/client/miscfunctions.qc | 183 ---------------------------------- qcsrc/client/progs.src | 1 + 3 files changed, 183 insertions(+), 183 deletions(-) create mode 100644 qcsrc/client/announcer.qc diff --git a/qcsrc/client/announcer.qc b/qcsrc/client/announcer.qc new file mode 100644 index 000000000..833eb8e12 --- /dev/null +++ b/qcsrc/client/announcer.qc @@ -0,0 +1,182 @@ +void serverAnnouncer() +{ + // check for pending announcement, play it and remove it + if(announce_snd != "") + { + sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/", announce_snd, ".wav"), VOL_BASEVOICE, ATTN_NONE); + strunzone(announce_snd); + announce_snd = ""; + } +} + +void restartAnnouncer_Think() { + float countdown_rounded, countdown; + countdown = getstatf(STAT_GAMESTARTTIME) - time; + countdown_rounded = floor(0.5 + countdown); + if(countdown <= 0) { + if (!spectatee_status) //do cprint only for players + centerprint_generic(CPID_GAME_STARTING, _("^1Begin!"), 1, 0); + + sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/begin.wav"), VOL_BASEVOICE, ATTN_NONE); + //reset maptime announcers now as well + announcer_5min = announcer_1min = FALSE; + + remove(self); + return; + } + else { + if (!spectatee_status) //do cprint only for players + centerprint_generic(CPID_GAME_STARTING, _("^1Game starts in %d seconds"), 1, countdown_rounded); + + if(countdown_rounded <= 3 && countdown_rounded >= 1) { + sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/", ftos(countdown_rounded), ".wav"), VOL_BASEVOICE, ATTN_NONE); + } + + self.nextthink = getstatf(STAT_GAMESTARTTIME) - (countdown - 1); + } +} + +/** + * Plays the 1minute or 5 minutes (of maptime) remaining sound, if client wants it + */ +void maptimeAnnouncer() { + float timelimit; + timelimit = getstatf(STAT_TIMELIMIT); + float timeleft; + timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time); + + float warmuplimit; + float warmuptimeleft; + if(warmup_stage) { + warmuplimit = autocvar_g_warmup_limit; + if(warmuplimit > 0) { + warmuptimeleft = max(0, warmuplimit + getstatf(STAT_GAMESTARTTIME) - time); + } + } + + //5 minute check + if (autocvar_cl_sound_maptime_warning >= 2) { + //make sure that after connect (and e.g. 4 minutes left) we will not get a wrong sound + if(announcer_5min) + { + if(((!warmup_stage || warmuplimit == 0) && timeleft > 300) || (warmup_stage && warmuplimit > 0 && warmuptimeleft > 300)) + announcer_5min = FALSE; + } + else if (((!warmup_stage || warmuplimit == 0) && timelimit > 0 && timeleft < 300 && timeleft > 299) || (warmup_stage && warmuplimit > 0 && warmuptimeleft < 300 && warmuptimeleft > 299)) + //if we're in warmup mode, check whether there's a warmup timelimit + if not (warmuplimit == -1 && warmup_stage) { + announcer_5min = TRUE; + sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/5minutesremain.wav"), VOL_BASEVOICE, ATTN_NONE); + } + } + + //1 minute check + if (autocvar_cl_sound_maptime_warning == 1 || autocvar_cl_sound_maptime_warning == 3) { + if (announcer_1min) + { + if(((!warmup_stage || warmuplimit == 0) && timeleft > 60) || (warmup_stage && warmuplimit > 0 && warmuptimeleft > 60)) + announcer_1min = FALSE; + } + else if (((!warmup_stage || warmuplimit == 0) && timelimit > 0 && timeleft < 60) || (warmup_stage && warmuplimit > 0 && warmuptimeleft < 60)) + //if we're in warmup mode, check whether there's a warmup timelimit + if not (warmuplimit == -1 && warmup_stage) { + announcer_1min = TRUE; + sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/1minuteremains.wav"), VOL_BASEVOICE, ATTN_NONE); + } + } +} + +/** + * Announce carried items (e.g. flags in CTF). + */ +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; +} + +/** + * Add all future announcer sounds precaches here. + * TODO: announcer queues + */ +void Announcer_Precache () { + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/1minuteremains.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/5minutesremain.wav")); + + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/electrobitch.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/airshot.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/03kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/05kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/10kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/15kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/20kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/25kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/30kills.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/botlike.wav")); + 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")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/begin.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/timeoutcalled.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/1fragleft.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/2fragsleft.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/3fragsleft.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/terminated.wav")); + + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/1.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/2.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/3.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/4.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/5.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/6.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/7.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/8.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/9.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/10.wav")); + + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/lastsecond.wav")); + precache_sound (strcat("announcer/", autocvar_cl_announcer, "/narrowly.wav")); + + 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 diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index 7301fbf0b..1a512c774 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -3,189 +3,6 @@ var float(string text, float handleColors, vector fontSize) stringwidth; entity players; entity teams; -void serverAnnouncer() -{ - // check for pending announcement, play it and remove it - if(announce_snd != "") - { - sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/", announce_snd, ".wav"), VOL_BASEVOICE, ATTN_NONE); - strunzone(announce_snd); - announce_snd = ""; - } -} - -void restartAnnouncer_Think() { - float countdown_rounded, countdown; - countdown = getstatf(STAT_GAMESTARTTIME) - time; - countdown_rounded = floor(0.5 + countdown); - if(countdown <= 0) { - if (!spectatee_status) //do cprint only for players - centerprint_generic(CPID_GAME_STARTING, _("^1Begin!"), 1, 0); - - sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/begin.wav"), VOL_BASEVOICE, ATTN_NONE); - //reset maptime announcers now as well - announcer_5min = announcer_1min = FALSE; - - remove(self); - return; - } - else { - if (!spectatee_status) //do cprint only for players - centerprint_generic(CPID_GAME_STARTING, _("^1Game starts in %d seconds"), 1, countdown_rounded); - - if(countdown_rounded <= 3 && countdown_rounded >= 1) { - sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/", ftos(countdown_rounded), ".wav"), VOL_BASEVOICE, ATTN_NONE); - } - - self.nextthink = getstatf(STAT_GAMESTARTTIME) - (countdown - 1); - } -} - -/** - * Plays the 1minute or 5 minutes (of maptime) remaining sound, if client wants it - */ -void maptimeAnnouncer() { - float timelimit; - timelimit = getstatf(STAT_TIMELIMIT); - float timeleft; - timeleft = max(0, timelimit * 60 + getstatf(STAT_GAMESTARTTIME) - time); - - float warmuplimit; - float warmuptimeleft; - if(warmup_stage) { - warmuplimit = autocvar_g_warmup_limit; - if(warmuplimit > 0) { - warmuptimeleft = max(0, warmuplimit + getstatf(STAT_GAMESTARTTIME) - time); - } - } - - //5 minute check - if (autocvar_cl_sound_maptime_warning >= 2) { - //make sure that after connect (and e.g. 4 minutes left) we will not get a wrong sound - if(announcer_5min) - { - if(((!warmup_stage || warmuplimit == 0) && timeleft > 300) || (warmup_stage && warmuplimit > 0 && warmuptimeleft > 300)) - announcer_5min = FALSE; - } - else if (((!warmup_stage || warmuplimit == 0) && timelimit > 0 && timeleft < 300 && timeleft > 299) || (warmup_stage && warmuplimit > 0 && warmuptimeleft < 300 && warmuptimeleft > 299)) - //if we're in warmup mode, check whether there's a warmup timelimit - if not (warmuplimit == -1 && warmup_stage) { - announcer_5min = TRUE; - sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/5minutesremain.wav"), VOL_BASEVOICE, ATTN_NONE); - } - } - - //1 minute check - if (autocvar_cl_sound_maptime_warning == 1 || autocvar_cl_sound_maptime_warning == 3) { - if (announcer_1min) - { - if(((!warmup_stage || warmuplimit == 0) && timeleft > 60) || (warmup_stage && warmuplimit > 0 && warmuptimeleft > 60)) - announcer_1min = FALSE; - } - else if (((!warmup_stage || warmuplimit == 0) && timelimit > 0 && timeleft < 60) || (warmup_stage && warmuplimit > 0 && warmuptimeleft < 60)) - //if we're in warmup mode, check whether there's a warmup timelimit - if not (warmuplimit == -1 && warmup_stage) { - announcer_1min = TRUE; - sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/1minuteremains.wav"), VOL_BASEVOICE, ATTN_NONE); - } - } -} - -/** - * Announce carried items (e.g. flags in CTF). - */ -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; -} - -/** - * Add all future announcer sounds precaches here. - * TODO: announcer queues - */ -void Announcer_Precache () { - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/1minuteremains.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/5minutesremain.wav")); - - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/electrobitch.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/airshot.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/03kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/05kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/10kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/15kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/20kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/25kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/30kills.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/botlike.wav")); - 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")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/begin.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/timeoutcalled.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/1fragleft.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/2fragsleft.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/3fragsleft.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/terminated.wav")); - - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/1.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/2.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/3.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/4.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/5.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/6.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/7.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/8.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/9.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/10.wav")); - - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/lastsecond.wav")); - precache_sound (strcat("announcer/", autocvar_cl_announcer, "/narrowly.wav")); - - 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")); -} - void AuditLists() { entity e; diff --git a/qcsrc/client/progs.src b/qcsrc/client/progs.src index 0d024a941..f650d04bd 100644 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@ -66,6 +66,7 @@ vehicles/vehicles.qc shownames.qh shownames.qc +announcer.qc Main.qc View.qc interpolate.qc -- 2.39.2