mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-22 20:41:20 +00:00
Factor out the next packet check code.
This commit is contained in:
parent
e04777571d
commit
01466e4e43
2 changed files with 67 additions and 48 deletions
|
@ -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 ();
|
||||
}
|
||||
|
||||
|
|
|
@ -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++) {
|
||||
|
|
Loading…
Reference in a new issue