]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
cl_autodemo, when set to true, automatically records every game you play. The filenam...
authorsajt <sajt@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 25 Mar 2006 07:58:18 +0000 (07:58 +0000)
committersajt <sajt@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 25 Mar 2006 07:58:18 +0000 (07:58 +0000)
Note - I'm pretty sure this currently lumps all games played successively into one demo. Feel free to fix that :)

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6187 d7cf8633-e32d-0410-b094-e92efae38249

cl_main.c
client.h
host_cmd.c

index 6dd9cdc44a52574228360eb23d3f14489b9c244b..99a2c135447d5fc8664fab7bd21116400ceda828 100644 (file)
--- a/cl_main.c
+++ b/cl_main.c
@@ -49,6 +49,9 @@ cvar_t m_side = {CVAR_SAVE, "m_side","0.8","mouse side speed multiplier"};
 
 cvar_t freelook = {CVAR_SAVE, "freelook", "1","mouse controls pitch instead of forward/back"};
 
+cvar_t cl_autodemo = {0, "cl_autodemo", "0", "records every game played, using the date/time and map name to name the demo file" };
+cvar_t cl_autodemo_nameformat = {0, "cl_autodemo_nameformat", "%Y-%m-%d_%H-%M", "The format of the cl_autodemo filename, followed by the map name" };
+
 cvar_t r_draweffects = {0, "r_draweffects", "1","renders temporary sprite effects"};
 
 cvar_t cl_explosions_alpha_start = {CVAR_SAVE, "cl_explosions_alpha_start", "1.5","starting alpha of an explosion shell"};
@@ -1744,6 +1747,9 @@ void CL_Init (void)
        Cmd_AddCommand ("playdemo", CL_PlayDemo_f, "watch a demo file");
        Cmd_AddCommand ("timedemo", CL_TimeDemo_f, "play back a demo as fast as possible and save statistics to benchmark.log");
 
+       Cvar_RegisterVariable (&cl_autodemo);
+       Cvar_RegisterVariable (&cl_autodemo_nameformat);
+
        Cmd_AddCommand ("fog", CL_Fog_f, "set global fog parameters (density red green blue)");
 
        // LordHavoc: added pausedemo
index a155916980a6609088d9e2f54feec0b99f04afa9..2e261852acbe1985ada254a808a410e99f7d1a7a 100644 (file)
--- a/client.h
+++ b/client.h
@@ -912,6 +912,9 @@ extern cvar_t m_yaw;
 extern cvar_t m_forward;
 extern cvar_t m_side;
 
+extern cvar_t cl_autodemo;
+extern cvar_t cl_autodemo_nameformat;
+
 extern cvar_t r_draweffects;
 
 extern cvar_t cl_explosions_alpha_start;
index 9bd58db01dec59540b4940a99657b89ab775d5a4..01ab25729600d1930f1cf3deb5e6263adb2a87b7 100644 (file)
@@ -281,6 +281,27 @@ void Host_Map_f (void)
        SV_SpawnServer(level);
        if (sv.active && cls.state == ca_disconnected)
                CL_EstablishConnection("local:1");
+
+// if cl_autodemo is set, automatically start recording a demo if one isn't being recorded already
+       if (cl_autodemo.integer && !cls.demorecording)
+       {
+               char demofile[MAX_OSPATH];
+
+               dpsnprintf (demofile, sizeof(demofile), "%s_%s.dem", Sys_TimeString (cl_autodemo_nameformat.string), level);
+
+               Con_Printf ("Recording to %s.\n", demofile);
+
+               cls.demofile = FS_Open (demofile, "wb", false, false);
+               if (cls.demofile)
+               {
+                       cls.forcetrack = -1;
+                       FS_Printf (cls.demofile, "%i\n", cls.forcetrack);
+               }
+               else
+                       Con_Print ("ERROR: couldn't open.\n");
+
+               cls.demorecording = true;
+       }
 }
 
 /*