From 85d99859798982dd88c7de8d8b7a71d4ac4b4a2b Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Thu, 12 Sep 2013 18:28:16 +0200 Subject: 0.1.4 --- src/cgame/cg_servercmds.c | 57 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 7 deletions(-) (limited to 'src/cgame/cg_servercmds.c') diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c index f11aa7e..2a71b62 100644 --- a/src/cgame/cg_servercmds.c +++ b/src/cgame/cg_servercmds.c @@ -1261,12 +1261,36 @@ static void CG_PoisonCloud_f( void ) /* ================= -CG_VoteEvent_f +CG_ProcessAnnouncer +================= +*/ +#define ANNOUNCER_DELAY 2000 +void CG_ProcessAnnouncer( void ) +{ + static int last = -ANNOUNCER_DELAY; + + if( cg.announcerStackPos == cg.announcerStackLatest ) + return; -Vote sounds use commands to save on events and entities + if( last + ANNOUNCER_DELAY > cg.time ) + return; + + cg.announcerStackPos++; + cg.announcerStackPos %= MAX_ANNOUNCER_STACK; + + trap_S_StartLocalSound( cg.announcerStack[ cg.announcerStackPos ], CHAN_VOICE ); + + last = cg.time; +} + +/* +================= +CG_Announce_f + +Play an announcer sound ================= */ -static void CG_VoteEvent( void ) +static void CG_Announce( void ) { const char *event, *soundName; @@ -1278,12 +1302,31 @@ static void CG_VoteEvent( void ) if( !Q_stricmp( event, "votenow" ) || !Q_stricmp( event, "votecancelled" ) || !Q_stricmp( event, "votefailed" ) || - !Q_stricmp( event, "votepassed" ) ) + !Q_stricmp( event, "votepassed" ) || + !Q_stricmp( event, "timelimit_hit" ) || + !Q_stricmp( event, "timelimit_1min" ) || + !Q_stricmp( event, "timelimit_5min" ) || + !Q_stricmp( event, "suddendeath" ) || + !Q_stricmp( event, "sdimminent" ) || + !Q_stricmp( event, "alienswin" ) || + !Q_stricmp( event, "aliensadmit" ) || + !Q_stricmp( event, "alienslocked" ) || + !Q_stricmp( event, "aliensunlocked" ) || + !Q_stricmp( event, "humanswin" ) || + !Q_stricmp( event, "humansadmit" ) || + !Q_stricmp( event, "humanslocked" ) || + !Q_stricmp( event, "humansunlocked" ) || + !Q_stricmp( event, "stalemate" ) || + !Q_stricmp( event, "1minremains" ) || + !Q_stricmp( event, "5minremains" ) ) soundName = va( "sound/feedback/%s.wav", event ); else return; - trap_S_StartLocalSound( trap_S_RegisterSound( soundName, qfalse ), CHAN_VOICE ); + cg.announcerStackLatest++; + cg.announcerStackLatest %= MAX_ANNOUNCER_STACK; + + cg.announcerStack[ cg.announcerStackLatest ] = trap_S_RegisterSound( soundName, qfalse ); } static void CG_GameCmds_f( void ) @@ -1303,6 +1346,7 @@ static void CG_GameCmds_f( void ) static consoleCommand_t svcommands[ ] = { + { "announce", CG_Announce }, { "cb2", CG_Cuboid_Response }, // set local cuboid { "cb3", CG_Cuboid_Response }, // set local cuboid and print a "limit exceeded" warning { "chat", CG_Chat_f }, @@ -1317,8 +1361,7 @@ static consoleCommand_t svcommands[ ] = { "serverclosemenus", CG_ServerCloseMenus_f }, { "servermenu", CG_ServerMenu_f }, { "tinfo", CG_ParseTeamInfo }, - { "voice", CG_ParseVoice }, - { "voteevent", CG_VoteEvent } + { "voice", CG_ParseVoice } }; /* -- cgit