X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=cl_demo.c;h=551b7cdad7c003f9140438cb5d9b85ec9e2650e0;hp=34c875eaae37ef43f7e46cc7a4f3a802f08a7080;hb=2e83f8e2e245189d6f1bf28a45dc42b8f480b12d;hpb=7305ab0695a23466c3554c8670c3b8a38bbc54a9 diff --git a/cl_demo.c b/cl_demo.c index 34c875ea..551b7cda 100644 --- a/cl_demo.c +++ b/cl_demo.c @@ -35,6 +35,36 @@ read from the demo file. ============================================================================== */ +/* +===================== +CL_NextDemo + +Called to play the next demo in the demo loop +===================== +*/ +void CL_NextDemo (void) +{ + char str[1024]; + + if (cls.demonum == -1) + return; // don't play demos + + if (!cls.demos[cls.demonum][0] || cls.demonum == MAX_DEMOS) + { + cls.demonum = 0; + if (!cls.demos[cls.demonum][0]) + { + Con_Printf ("No demos listed with startdemos\n"); + cls.demonum = -1; + return; + } + } + + sprintf (str,"playdemo %s\n", cls.demos[cls.demonum]); + Cbuf_InsertText (str); + cls.demonum++; +} + /* ============== CL_StopPlayback @@ -42,6 +72,7 @@ CL_StopPlayback Called when a demo file runs out, or the user starts a game ============== */ +// LordHavoc: now called only by CL_Disconnect void CL_StopPlayback (void) { if (!cls.demoplayback) @@ -50,7 +81,6 @@ void CL_StopPlayback (void) Qclose (cls.demofile); cls.demoplayback = false; cls.demofile = NULL; - cls.state = ca_disconnected; if (cls.timedemo) CL_FinishTimeDemo (); @@ -113,7 +143,7 @@ int CL_GetMessage (void) if (host_framecount == cls.td_startframe + 1) cls.td_starttime = realtime; } - else if ( /* cl.time > 0 && */ cl.time <= cl.mtime[0]) + else if (cl.time <= cl.mtime[0]) { return 0; // don't need another message yet } @@ -134,7 +164,7 @@ int CL_GetMessage (void) r = Qread (cls.demofile, net_message.data, net_message.cursize); if (r != net_message.cursize) { - CL_StopPlayback (); + CL_Disconnect (); return 0; } @@ -259,7 +289,7 @@ void CL_Record_f (void) cls.forcetrack = track; Qprintf (cls.demofile, "%i\n", cls.forcetrack); - + cls.demorecording = true; } @@ -286,13 +316,11 @@ void CL_PlayDemo_f (void) return; } -// SCR_BeginLoadingPlaque(); - // // disconnect from server // CL_Disconnect (); - + // // open the demo file // @@ -308,6 +336,8 @@ void CL_PlayDemo_f (void) return; } + SCR_BeginLoadingPlaque (); + cls.demoplayback = true; cls.state = ca_connected; cls.forcetrack = 0; @@ -320,8 +350,6 @@ void CL_PlayDemo_f (void) if (neg) cls.forcetrack = -cls.forcetrack; -// ZOID, fscanf is evil -// fscanf (cls.demofile, "%i\n", &cls.forcetrack); } /* @@ -365,10 +393,15 @@ void CL_TimeDemo_f (void) } CL_PlayDemo_f (); - + // cls.td_starttime will be grabbed at the second frame of the demo, so // all the loading time doesn't get counted - + + // instantly hide console and deactivate it + key_dest = key_game; + scr_conlines = 0; + scr_con_current = 0; + cls.timedemo = true; cls.td_startframe = host_framecount; cls.td_lastframe = -1; // get a new message this frame