From 6692afa55ba5c7e33eea3243b6b96947e5c3e739 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Sat, 24 Jun 2023 17:42:11 -0700 Subject: [PATCH] Fix #165 by not ignoring the track specified in the NQ demo header --- engine/client/cl_demo.c | 6 ++++++ engine/client/cl_main.c | 1 + engine/client/cl_parse.c | 4 ++++ engine/client/client.h | 1 + 4 files changed, 12 insertions(+) diff --git a/engine/client/cl_demo.c b/engine/client/cl_demo.c index 6f8887151..be4106051 100644 --- a/engine/client/cl_demo.c +++ b/engine/client/cl_demo.c @@ -77,6 +77,7 @@ void CL_StopPlayback (void) cls.state = ca_disconnected; cls.demoplayback = DPB_NONE; cls.demoseeking = false; //just in case + cls.demotrack = -1; if (cls.timedemo) CL_FinishTimeDemo (); @@ -2415,6 +2416,11 @@ void CL_PlayDemoFile(vfsfile_t *f, char *demoname, qboolean issyspath) ft *= -1; if (chr == '\n') { + if (ft > 0) + cls.demotrack = ft; + else + cls.demotrack = -1; + CL_PlayDemoStream(f, demoname, issyspath, DPB_NETQUAKE, 0); return; } diff --git a/engine/client/cl_main.c b/engine/client/cl_main.c index 6fa9dd3dd..6b42613bb 100644 --- a/engine/client/cl_main.c +++ b/engine/client/cl_main.c @@ -5135,6 +5135,7 @@ void CL_Init (void) size_t seat; cls.state = ca_disconnected; + cls.demotrack = -1; #ifdef SVNREVISION if (strcmp(STRINGIFY(SVNREVISION), "-")) diff --git a/engine/client/cl_parse.c b/engine/client/cl_parse.c index 2a6176db6..2951724ca 100644 --- a/engine/client/cl_parse.c +++ b/engine/client/cl_parse.c @@ -8405,6 +8405,10 @@ void CLNQ_ParseServerMessage (void) unsigned int looptrack; firsttrack = MSG_ReadByte (); looptrack = MSG_ReadByte (); + + if (cls.demotrack != -1) + firsttrack = looptrack = cls.demotrack; + Media_NumberedTrack (firsttrack, looptrack); } break; diff --git a/engine/client/client.h b/engine/client/client.h index 6c90e2b45..13e0150b7 100644 --- a/engine/client/client.h +++ b/engine/client/client.h @@ -518,6 +518,7 @@ typedef struct qboolean demohadkeyframe; //q2 needs to wait for a packet with a key frame, supposedly. qboolean demoseeking; float demoseektime; + int demotrack; qboolean timedemo; char lastdemoname[MAX_OSPATH]; qboolean lastdemowassystempath;