From 01466e4e4364e94c3667d102701d4130d11fb663 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Thu, 7 Jun 2012 08:14:47 +0900 Subject: [PATCH] Factor out the next packet check code. --- nq/source/cl_demo.c | 38 +++++++++++++--------- qw/source/cl_demo.c | 77 ++++++++++++++++++++++++++------------------- 2 files changed, 67 insertions(+), 48 deletions(-) diff --git a/nq/source/cl_demo.c b/nq/source/cl_demo.c index eb6e73440..f73cb28d0 100644 --- a/nq/source/cl_demo.c +++ b/nq/source/cl_demo.c @@ -150,6 +150,27 @@ CL_StopRecording (void) Sys_Printf ("Completed demo\n"); } +// decide if it is time to grab the next message +static int +check_next_demopacket (void) +{ + if (cls.state == ca_active) { // always grab until fully connected + if (cls.timedemo) { + if (host_framecount == cls.td_lastframe) + return 0; // already read this frame's message + cls.td_lastframe = host_framecount; + // if this is the second frame, grab the real td_starttime + // so the bogus time on the first frame doesn't count + if (host_framecount == cls.td_startframe + 1) + cls.td_starttime = realtime; + } else if (cl.time <= cl.mtime[0]) { + return 0; // don't need another message yet + } + } + return 1; +} + +// get the next message static int read_demopacket (void) { @@ -179,21 +200,8 @@ read_demopacket (void) static int CL_GetDemoMessage (void) { - // decide if it is time to grab the next message - if (cls.state == ca_active) { // always grab until fully connected - if (cls.timedemo) { - if (host_framecount == cls.td_lastframe) - return 0; // already read this frame's message - cls.td_lastframe = host_framecount; - // if this is the second frame, grab the real td_starttime - // so the bogus time on the first frame doesn't count - if (host_framecount == cls.td_startframe + 1) - cls.td_starttime = realtime; - } else if (cl.time <= cl.mtime[0]) { - return 0; // don't need another message yet - } - } - // get the next message + if (!check_next_demopacket ()) + return 0; return read_demopacket (); } diff --git a/qw/source/cl_demo.c b/qw/source/cl_demo.c index fe351922f..fd08a26af 100644 --- a/qw/source/cl_demo.c +++ b/qw/source/cl_demo.c @@ -218,43 +218,15 @@ push_demotime (float demotime, byte newtime) cached_newtime = newtime; } +// decide if it is time to grab the next message static int -read_demopacket (void) +check_next_demopacket (void) { - int r; + byte newtime; + float demotime; - Qread (cls.demofile, &net_message->message->cursize, 4); - net_message->message->cursize = - LittleLong (net_message->message->cursize); - if (net_message->message->cursize > MAX_DEMMSG) - Host_Error ("Demo message > MAX_DEMMSG: %d/%d", - net_message->message->cursize, MAX_DEMMSG); - r = Qread (cls.demofile, net_message->message->data, - net_message->message->cursize); - if (r != net_message->message->cursize) { - CL_StopPlayback (); - return 0; - } - return 1; -} - -static int -CL_GetDemoMessage (void) -{ - byte c, newtime; - float demotime, f; - int r, i, j, tracknum; - usercmd_t *pcmd; - - if (!cls.demoplayback2) - nextdemotime = realtime; - if (realtime + 1.0 < nextdemotime) - realtime = nextdemotime - 1.0; - -nextdemomessage: get_demotime (&demotime, &newtime); - // decide if it is time to grab the next message if (cls.timedemo) { if (cls.td_lastframe < 0) cls.td_lastframe = demotime; @@ -294,6 +266,45 @@ nextdemomessage: nextdemotime = demotime; cls.prevtime += newtime; + return 1; +} + +static int +read_demopacket (void) +{ + int r; + + Qread (cls.demofile, &net_message->message->cursize, 4); + net_message->message->cursize = + LittleLong (net_message->message->cursize); + if (net_message->message->cursize > MAX_DEMMSG) + Host_Error ("Demo message > MAX_DEMMSG: %d/%d", + net_message->message->cursize, MAX_DEMMSG); + r = Qread (cls.demofile, net_message->message->data, + net_message->message->cursize); + if (r != net_message->message->cursize) { + CL_StopPlayback (); + return 0; + } + return 1; +} + +static int +CL_GetDemoMessage (void) +{ + byte c; + float f; + int r, i, j, tracknum; + usercmd_t *pcmd; + + if (!cls.demoplayback2) + nextdemotime = realtime; + if (realtime + 1.0 < nextdemotime) + realtime = nextdemotime - 1.0; + +nextdemomessage: + if (!check_next_demopacket ()) + return 0; if (cls.state < ca_demostart) Host_Error ("CL_GetDemoMessage: cls.state != ca_active"); @@ -318,7 +329,7 @@ nextdemomessage: pcmd->forwardmove = LittleShort (pcmd->forwardmove); pcmd->sidemove = LittleShort (pcmd->sidemove); pcmd->upmove = LittleShort (pcmd->upmove); - cl.frames[i].senttime = demotime; + cl.frames[i].senttime = nextdemotime; //FIXME was demotime cl.frames[i].receivedtime = -1; // we haven't gotten a reply yet cls.netchan.outgoing_sequence++; for (i = 0; i < 3; i++) {