Play chat sound defined by cvars rather than hardcoded strings
authorcloudwalk <cloudwalk@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 15 Jun 2020 02:11:31 +0000 (02:11 +0000)
committercloudwalk <cloudwalk@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 15 Jun 2020 02:11:31 +0000 (02:11 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@12677 d7cf8633-e32d-0410-b094-e92efae38249

cl_parse.c
client.h
cmd.c
console.c

index 2363b0f..6dc196b 100644 (file)
@@ -468,6 +468,7 @@ void CL_ParseEntityLump(char *entdata)
                R_SetSkyBox("unit1_");
 }
 
+extern cvar_t con_chatsound_team_file;
 static const vec3_t defaultmins = {-4096, -4096, -4096};
 static const vec3_t defaultmaxs = {4096, 4096, 4096};
 static void CL_SetupWorldModel(void)
@@ -512,7 +513,7 @@ static void CL_SetupWorldModel(void)
        CL_KeepaliveMessage(false);
 
        // load the team chat beep if possible
-       cl.foundtalk2wav = FS_FileExists("sound/misc/talk2.wav");
+       cl.foundteamchatsound = FS_FileExists(con_chatsound_team_file.string);
 
        // check memory integrity
        Mem_CheckSentinelsGlobal();
index 435299c..3a52a0b 100644 (file)
--- a/client.h
+++ b/client.h
@@ -1242,7 +1242,7 @@ typedef struct client_state_s
        sfx_t *sfx_ric3;
        sfx_t *sfx_r_exp3;
        // indicates that the file "sound/misc/talk2.wav" was found (for use by team chat messages)
-       qboolean foundtalk2wav;
+       qboolean foundteamchatsound;
 
 // refresh related state
 
diff --git a/cmd.c b/cmd.c
index 1327c44..48ab043 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -659,6 +659,7 @@ static void Cmd_Exec(cmd_state_t *cmd, const char *filename)
 "sv_gameplayfix_q2airaccelerate 1\n"
 "sv_gameplayfix_stepmultipletimes 1\n"
 "csqc_polygons_defaultmaterial_nocullface 1\n"
+"con_chatsound_team_mask 13\n"
                                );
                        break;
                case GAME_XONOTIC:
@@ -666,6 +667,7 @@ static void Cmd_Exec(cmd_state_t *cmd, const char *filename)
                        // compatibility for versions prior to 2020-05-25, this can be overridden in newer versions to get the default behavior and be consistent with FTEQW engine
                        Cbuf_InsertText(cmd, "\n"
 "csqc_polygons_defaultmaterial_nocullface 1\n"
+"con_chatsound_team_mask 13\n"
                                );
                        break;
                // Steel Storm: Burning Retribution csqc misinterprets CSQC_InputEvent if type is a value other than 0 or 1
index 7748769..e88af14 100644 (file)
--- a/console.c
+++ b/console.c
@@ -57,7 +57,9 @@ cvar_t con_textsize = {CVAR_CLIENT | CVAR_SAVE, "con_textsize","8", "console tex
 cvar_t con_notifysize = {CVAR_CLIENT | CVAR_SAVE, "con_notifysize","8", "notify text size in virtual 2D pixels"};
 cvar_t con_chatsize = {CVAR_CLIENT | CVAR_SAVE, "con_chatsize","8", "chat text size in virtual 2D pixels (if con_chat is enabled)"};
 cvar_t con_chatsound = {CVAR_CLIENT | CVAR_SAVE, "con_chatsound","1", "enables chat sound to play on message"};
-
+cvar_t con_chatsound_file = {CVAR_CLIENT, "con_chatsound_file","sound/misc/talk.wav", "The sound to play for chat messages"};
+cvar_t con_chatsound_team_file = {CVAR_CLIENT, "con_chatsound_team_file","sound/misc/talk2.wav", "The sound to play for team chat messages"};
+cvar_t con_chatsound_team_mask = {CVAR_CLIENT | CVAR_READONLY, "con_chatsound_team_mask","40","Magic ASCII code that denotes a team chat message"};
 
 cvar_t sys_specialcharactertranslation = {CVAR_CLIENT | CVAR_SERVER, "sys_specialcharactertranslation", "1", "terminal console conchars to ASCII translation (set to 0 if your conchars.tga is for an 8bit character set or if you want raw output)"};
 #ifdef WIN32
@@ -884,6 +886,9 @@ void Con_Init (void)
        Cvar_RegisterVariable (&con_notifytime);
        Cvar_RegisterVariable (&con_textsize);
        Cvar_RegisterVariable (&con_chatsound);
+       Cvar_RegisterVariable (&con_chatsound_file);
+       Cvar_RegisterVariable (&con_chatsound_team_file);
+       Cvar_RegisterVariable (&con_chatsound_team_mask);
 
        // --blub
        Cvar_RegisterVariable (&con_nickcompletion);
@@ -1156,28 +1161,17 @@ void Con_MaskPrint(int additionalmask, const char *msg)
                                {
                                        if (con_chatsound.value)
                                        {
-                                               if(IS_NEXUIZ_DERIVED(gamemode))
-                                               {
-                                                       if(msg[1] == '\r' && cl.foundtalk2wav)
-                                                               S_LocalSound ("sound/misc/talk2.wav");
-                                                       else
-                                                               S_LocalSound ("sound/misc/talk.wav");
-                                               }
+                                               if(msg[1] == con_chatsound_team_mask.integer && cl.foundteamchatsound)
+                                                       S_LocalSound (con_chatsound_team_file.string);
                                                else
-                                               {
-                                                       if (msg[1] == '(' && cl.foundtalk2wav)
-                                                               S_LocalSound ("sound/misc/talk2.wav");
-                                                       else
-                                                               S_LocalSound ("sound/misc/talk.wav");
-                                               }
+                                                       S_LocalSound (con_chatsound_file.string);
                                        }
                                }
-                               
                                // Send to chatbox for say/tell (1) and messages (3)
                                // 3 is just so that a message can be sent to the chatbox without a sound.
                                if (*msg == 1 || *msg == 3)
                                        mask = CON_MASK_CHAT;
-                               
+
                                line[index++] = STRING_COLOR_TAG;
                                line[index++] = '3';
                                msg++;