]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
fixed a reference to sv.models in client code (should have been
[xonotic/darkplaces.git] / cl_parse.c
index 4f943c5795c808a96506ed098382a09f307f2557..c77cd252c770fe66fc41fde00676d69ccc980ade 100644 (file)
@@ -164,6 +164,9 @@ cvar_t cl_sound_tink1 = {0, "cl_sound_tink1", "weapons/tink1.wav", "sound to pla
 cvar_t cl_sound_ric1 = {0, "cl_sound_ric1", "weapons/ric1.wav", "sound to play with 5% chance during TE_SPIKE/TE_SUPERSPIKE (empty cvar disables sound)"};
 cvar_t cl_sound_ric2 = {0, "cl_sound_ric2", "weapons/ric2.wav", "sound to play with 5% chance during TE_SPIKE/TE_SUPERSPIKE (empty cvar disables sound)"};
 cvar_t cl_sound_ric3 = {0, "cl_sound_ric3", "weapons/ric3.wav", "sound to play with 10% chance during TE_SPIKE/TE_SUPERSPIKE (empty cvar disables sound)"};
+
+#define RIC_GUNSHOT            1
+#define RIC_GUNSHOTQUAD        2
 cvar_t cl_sound_ric_gunshot = {0, "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 = {0, "cl_sound_r_exp3", "weapons/r_exp3.wav", "sound to play during TE_EXPLOSION and related effects (empty cvar disables sound)"};
 cvar_t cl_serverextension_download = {0, "cl_serverextension_download", "0", "indicates whether the server supports the download command"};
@@ -476,7 +479,8 @@ static void QW_CL_RequestNextDownload(void)
 
                // touch all of the precached models that are still loaded so we can free
                // anything that isn't needed
-               Mod_ClearUsed();
+               if (!sv.active)
+                       Mod_ClearUsed();
                for (i = 1;i < MAX_MODELS && cl.model_name[i][0];i++)
                        Mod_FindName(cl.model_name[i]);
                // precache any models used by the client (this also marks them used)
@@ -1500,7 +1504,8 @@ void CL_ParseServerInfo (void)
 
                // touch all of the precached models that are still loaded so we can free
                // anything that isn't needed
-               Mod_ClearUsed();
+               if (!sv.active)
+                       Mod_ClearUsed();
                for (i = 1;i < nummodels;i++)
                        Mod_FindName(cl.model_name[i]);
                // precache any models used by the client (this also marks them used)
@@ -1621,7 +1626,7 @@ void CL_MoveLerpEntityStates(entity_t *ent)
                ent->render.framelerp = 1;
                // reset various persistent stuff
                ent->persistent.muzzleflash = 0;
-               VectorCopy(ent->state_current.origin, ent->persistent.trail_origin);
+               ent->persistent.trail_allowed = false;
        }
        else if (DotProduct(odelta, odelta) > 1000*1000 || (cl.fixangle[0] && !cl.fixangle[1]))
        {
@@ -1634,6 +1639,7 @@ void CL_MoveLerpEntityStates(entity_t *ent)
                VectorCopy(ent->state_current.angles, ent->persistent.oldangles);
                VectorCopy(ent->state_current.origin, ent->persistent.neworigin);
                VectorCopy(ent->state_current.angles, ent->persistent.newangles);
+               ent->persistent.trail_allowed = false;
        }
        else if (ent->state_current.flags & RENDER_STEP)
        {
@@ -2087,7 +2093,7 @@ void CL_ParseTempEntity(void)
                        VectorSet(pos2, pos[0] + radius, pos[1] + radius, pos[2] + radius);
                        VectorSet(pos, pos[0] - radius, pos[1] - radius, pos[2] - radius);
                        CL_ParticleEffect(EFFECT_TE_GUNSHOT, radius, pos, pos2, vec3_origin, vec3_origin, NULL, 0);
-                       if(cl_sound_ric_gunshot.integer == 1 || cl_sound_ric_gunshot.integer == 3)
+                       if(cl_sound_ric_gunshot.integer & RIC_GUNSHOT)
                        {
                                if (rand() % 5)
                                        S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);
@@ -2293,7 +2299,7 @@ void CL_ParseTempEntity(void)
                        MSG_ReadVector(pos, cls.protocol);
                        CL_FindNonSolidLocation(pos, pos, 4);
                        CL_ParticleEffect(EFFECT_TE_GUNSHOT, 1, pos, pos, vec3_origin, vec3_origin, NULL, 0);
-                       if(cl_sound_ric_gunshot.integer == 1 || cl_sound_ric_gunshot.integer == 3)
+                       if(cl_sound_ric_gunshot.integer & RIC_GUNSHOT)
                        {
                                if (rand() % 5)
                                        S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);
@@ -2315,7 +2321,7 @@ void CL_ParseTempEntity(void)
                        MSG_ReadVector(pos, cls.protocol);
                        CL_FindNonSolidLocation(pos, pos, 4);
                        CL_ParticleEffect(EFFECT_TE_GUNSHOTQUAD, 1, pos, pos, vec3_origin, vec3_origin, NULL, 0);
-                       if(cl_sound_ric_gunshot.integer >= 2)
+                       if(cl_sound_ric_gunshot.integer & RIC_GUNSHOTQUAD)
                        {
                                if (rand() % 5)
                                        S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);