]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
demo deleting: switch the meaning of the values 2 and 3 in cl_autodemo_delete, so...
[xonotic/darkplaces.git] / cl_parse.c
index d5c66b79daebcab9bbb1b3559e1ccb03574cb378..63d49ab3142e7e9c57999f8df30fc827dc877ebb 100644 (file)
@@ -389,6 +389,7 @@ void CL_ParseEntityLump(char *entdata)
                        R_SetSkyBox(value);
                else if (!strcmp("fog", key))
                {
+                       FOG_clear(); // so missing values get good defaults
                        r_refdef.fog_start = 0;
                        r_refdef.fog_alpha = 1;
                        r_refdef.fog_end = 16384;
@@ -417,6 +418,16 @@ void CL_ParseEntityLump(char *entdata)
                        r_refdef.fog_height = atof(value);
                else if (!strcmp("fog_fadedepth", key))
                        r_refdef.fog_fadedepth = atof(value);
+               else if (!strcmp("fog_heighttexture", key))
+               {
+                       FOG_clear(); // so missing values get good defaults
+#if _MSC_VER >= 1400
+                       sscanf_s(value, "%f %f %f %f %f %f %f %f %f %s", &r_refdef.fog_density, &r_refdef.fog_red, &r_refdef.fog_green, &r_refdef.fog_blue, &r_refdef.fog_alpha, &r_refdef.fog_start, &r_refdef.fog_end, &r_refdef.fog_height, &r_refdef.fog_fadedepth, r_refdef.fog_height_texturename, (unsigned int)sizeof(r_refdef.fog_height_texturename));
+#else
+                       sscanf(value, "%f %f %f %f %f %f %f %f %f %63s", &r_refdef.fog_density, &r_refdef.fog_red, &r_refdef.fog_green, &r_refdef.fog_blue, &r_refdef.fog_alpha, &r_refdef.fog_start, &r_refdef.fog_end, &r_refdef.fog_height, &r_refdef.fog_fadedepth, r_refdef.fog_height_texturename);
+#endif
+                       r_refdef.fog_height_texturename[63] = 0;
+               }
        }
 }
 
@@ -1089,13 +1100,18 @@ void CL_BeginDownloads(qboolean aborteddownload)
                        }
                        CL_KeepaliveMessage(true);
 
-                       if(cl.loadmodel_current == 1)
+                       // if running a local game, calling Mod_ForName is a completely wasted effort...
+                       if (sv.active)
+                               cl.model_precache[cl.loadmodel_current] = sv.models[cl.loadmodel_current];
+                       else
                        {
-                               // they'll be soon loaded, but make sure we apply freshly downloaded shaders from a curled pk3
-                               Mod_FreeQ3Shaders();
+                               if(cl.loadmodel_current == 1)
+                               {
+                                       // they'll be soon loaded, but make sure we apply freshly downloaded shaders from a curled pk3
+                                       Mod_FreeQ3Shaders();
+                               }
+                               cl.model_precache[cl.loadmodel_current] = Mod_ForName(cl.model_name[cl.loadmodel_current], false, false, cl.model_name[cl.loadmodel_current][0] == '*' ? cl.model_name[1] : NULL);
                        }
-
-                       cl.model_precache[cl.loadmodel_current] = Mod_ForName(cl.model_name[cl.loadmodel_current], false, false, cl.model_name[cl.loadmodel_current][0] == '*' ? cl.model_name[1] : NULL);
                        SCR_PopLoadingScreen(false);
                        if (cl.model_precache[cl.loadmodel_current] && cl.model_precache[cl.loadmodel_current]->Draw && cl.loadmodel_current == 1)
                        {
@@ -1812,6 +1828,13 @@ void CL_ParseServerInfo (void)
 
                Con_Printf ("Auto-recording to %s.\n", demofile);
 
+               // Reset bit 0 for every new demo
+               Cvar_SetValueQuick(&cl_autodemo_delete,
+                       (cl_autodemo_delete.integer & ~0x1)
+                       |
+                       ((cl_autodemo_delete.integer & 0x2) ? 0x1 : 0)
+               );
+
                cls.demofile = FS_OpenRealFile(demofile, "wb", false);
                if (cls.demofile)
                {
@@ -3625,6 +3648,7 @@ void CL_ParseServerMessage(void)
 
                        if (cmd == -1)
                        {
+//                             R_TimeReport("END OF MESSAGE");
                                SHOWNET("END OF MESSAGE");
                                break;          // end of message
                        }
@@ -4069,22 +4093,29 @@ void CL_ParseServerMessage(void)
                                CL_ParsePointParticles1();
                                break;
                        }
+//                     R_TimeReport(svc_strings[cmd]);
                }
        }
 
        if (cls.signon == SIGNONS)
                CL_UpdateItemsAndWeapon();
+//     R_TimeReport("UpdateItems");
 
        EntityFrameQuake_ISeeDeadEntities();
+//     R_TimeReport("ISeeDeadEntities");
 
        CL_UpdateMoveVars();
+//     R_TimeReport("UpdateMoveVars");
 
        parsingerror = false;
 
        // LordHavoc: this was at the start of the function before cl_autodemo was
        // implemented
        if (cls.demorecording)
+       {
                CL_WriteDemoMessage (&net_message);
+//             R_TimeReport("WriteDemo");
+       }
 }
 
 void CL_Parse_DumpPacket(void)