]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
Resolved .gitignore conflict
[xonotic/darkplaces.git] / cl_parse.c
index b8ff71f9bbd7a12b5b96c2ef1b357edc2d7d4af5..1afbcbe7fd83cc51e0c8d12df82e71e91285cbb9 100644 (file)
@@ -35,7 +35,7 @@ const char *svc_strings[128] =
 {
        "svc_bad",
        "svc_nop",
-       "svc_disconnect",
+       "svc_disconnect",       // (DP8) [string] null terminated parting message
        "svc_updatestat",
        "svc_version",          // [int] server version
        "svc_setview",          // [short] entity number
@@ -184,6 +184,8 @@ cvar_t cl_readpicture_force = {CF_CLIENT, "cl_readpicture_force", "0", "when ena
 #define RIC_GUNSHOTQUAD        2
 cvar_t cl_sound_ric_gunshot = {CF_CLIENT, "cl_sound_ric_gunshot", "0", "specifies if and when the related cl_sound_ric and cl_sound_tink sounds apply to TE_GUNSHOT/TE_GUNSHOTQUAD, 0 = no sound, 1 = TE_GUNSHOT, 2 = TE_GUNSHOTQUAD, 3 = TE_GUNSHOT and TE_GUNSHOTQUAD"};
 cvar_t cl_sound_r_exp3 = {CF_CLIENT, "cl_sound_r_exp3", "weapons/r_exp3.wav", "sound to play during TE_EXPLOSION and related effects (empty cvar disables sound)"};
+cvar_t snd_cdautopause = {CF_CLIENT | CF_ARCHIVE, "snd_cdautopause", "1", "pause the CD track while the game is paused"};
+
 cvar_t cl_serverextension_download = {CF_CLIENT, "cl_serverextension_download", "0", "indicates whether the server supports the download command"};
 cvar_t cl_joinbeforedownloadsfinish = {CF_CLIENT | CF_ARCHIVE, "cl_joinbeforedownloadsfinish", "1", "if non-zero the game will begin after the map is loaded before other downloads finish"};
 cvar_t cl_nettimesyncfactor = {CF_CLIENT | CF_ARCHIVE, "cl_nettimesyncfactor", "0", "rate at which client time adapts to match server time, 1 = instantly, 0.125 = slowly, 0 = not at all (only applied in bound modes 0, 1, 2, 3)"};
@@ -1448,7 +1450,7 @@ static void CL_StopDownload(int size, int crc)
                                Con_Printf("Downloaded \"%s\" (%i bytes, %i CRC)\n", cls.qw_downloadname, size, crc);
                                FS_WriteFile(cls.qw_downloadname, cls.qw_downloadmemory, cls.qw_downloadmemorycursize);
                                extension = FS_FileExtension(cls.qw_downloadname);
-                               if (!strcasecmp(extension, "pak") || !strcasecmp(extension, "pk3"))
+                               if (!strcasecmp(extension, "pak") || !strcasecmp(extension, "pk3") || !strcasecmp(extension, "dpk"))
                                        FS_Rescan();
                        }
                }
@@ -3391,8 +3393,10 @@ static void CL_NetworkTimeReceived(double newtime)
        // update the csqc's server timestamps, critical for proper sync
        CSQC_UpdateNetworkTimes(cl.mtime[0], cl.mtime[1]);
 
+#ifdef USEODE
        if (cl.mtime[0] > cl.mtime[1])
                World_Physics_Frame(&cl.world, cl.mtime[0] - cl.mtime[1], cl.movevars_gravity);
+#endif
 
        // only lerp entities that also get an update in this frame, when lerp excess is used
        if(cl_lerpexcess.value > 0)
@@ -3529,10 +3533,7 @@ void CL_ParseServerMessage(void)
                                if (cls.demonum != -1)
                                        CL_NextDemo();
                                else
-                               {
-                                       Con_Printf("Server disconnected\n");
-                                       CL_Disconnect();
-                               }
+                                       CL_DisconnectEx(true, "Server disconnected");
                                break;
 
                        case qw_svc_print:
@@ -3794,9 +3795,9 @@ void CL_ParseServerMessage(void)
 
                        case qw_svc_setpause:
                                cl.paused = MSG_ReadByte(&cl_message) != 0;
-                               if (cl.paused)
+                               if (cl.paused && snd_cdautopause.integer)
                                        CDAudio_Pause ();
-                               else
+                               else if (bgmvolume.value > 0.0f)
                                        CDAudio_Resume ();
                                S_PauseGameSounds (cl.paused);
                                break;
@@ -3910,12 +3911,9 @@ void CL_ParseServerMessage(void)
 
                        case svc_disconnect:
                                if (cls.demonum != -1)
-                                       CL_NextDemo ();
+                                       CL_NextDemo();
                                else
-                               {
-                                       Con_Printf ("Server disconnected\n");
-                                       CL_Disconnect ();
-                               }
+                                       CL_DisconnectEx(true, cls.protocol == PROTOCOL_DARKPLACES8 ? MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring)) : "Server disconnected");
                                break;
 
                        case svc_print:
@@ -4124,9 +4122,9 @@ void CL_ParseServerMessage(void)
 
                        case svc_setpause:
                                cl.paused = MSG_ReadByte(&cl_message) != 0;
-                               if (cl.paused)
+                               if (cl.paused && snd_cdautopause.integer)
                                        CDAudio_Pause ();
-                               else
+                               else if (bgmvolume.value > 0.0f)
                                        CDAudio_Resume ();
                                S_PauseGameSounds (cl.paused);
                                break;
@@ -4328,6 +4326,7 @@ void CL_Parse_Init(void)
        Cvar_RegisterVariable(&cl_sound_ric3);
        Cvar_RegisterVariable(&cl_sound_ric_gunshot);
        Cvar_RegisterVariable(&cl_sound_r_exp3);
+       Cvar_RegisterVariable(&snd_cdautopause);
 
        Cvar_RegisterVariable(&cl_joinbeforedownloadsfinish);