Fix demo playback. Play some ftenq demos too.

This commit is contained in:
Shpoike 2018-10-16 20:36:23 +01:00
parent d595a3d9cd
commit 4d0d324479
3 changed files with 30 additions and 10 deletions

View file

@ -160,6 +160,7 @@ void CL_Disconnect (void)
NET_SendUnreliableMessage (cls.netcon, &cls.message);
SZ_Clear (&cls.message);
NET_Close (cls.netcon);
cls.netcon = NULL;
cls.state = ca_disconnected;
if (sv.active)

View file

@ -643,7 +643,7 @@ static void CLFTE_ParseEntitiesUpdate(void)
float newtime;
//so the server can know when we got it, and guess which frames we didn't get
if (cl.ackframes_count < sizeof(cl.ackframes)/sizeof(cl.ackframes[0]))
if (cls.netcon && cl.ackframes_count < sizeof(cl.ackframes)/sizeof(cl.ackframes[0]))
cl.ackframes[cl.ackframes_count++] = NET_QSocketGetSequenceIn(cls.netcon);
if (cl.protocol_pext2 & PEXT2_PREDINFO)
@ -790,7 +790,7 @@ void CLFTE_ParseCSQCEntitiesUpdate(void)
}
}
else*/
Host_Error ("Received svcdp_csqcentities but unable to parse");
Host_Error ("Received svc_csqcentities but unable to parse");
}
@ -1227,11 +1227,18 @@ static void CL_ParseServerInfo (void)
for(;;)
{
i = MSG_ReadLong ();
if (i == PROTOCOL_FTE_PEXT1)
{
i = MSG_ReadLong();
if (i & ~PEXT1_ACCEPTED_CLIENT)
Host_Error ("Server returned FTE1 protocol extensions that are not supported (%#x)", i);
continue;
}
if (i == PROTOCOL_FTE_PEXT2)
{
cl.protocol_pext2 = MSG_ReadLong();
if (cl.protocol_pext2 & ~PEXT2_SUPPORTED_CLIENT)
Host_Error ("Server returned FTE protocol extensions that are not supported (%#x)", cl.protocol_pext2 & ~PEXT2_SUPPORTED_CLIENT);
if (cl.protocol_pext2 & ~PEXT2_ACCEPTED_CLIENT)
Host_Error ("Server returned FTE2 protocol extensions that are not supported (%#x)", cl.protocol_pext2 & ~PEXT2_SUPPORTED_CLIENT);
continue;
}
break;
@ -1616,7 +1623,7 @@ static void CL_ParseUpdate (int bits)
else
ent->alpha = ent->baseline.alpha;
//johnfitz
//johnfitz -- moved here from above
model = cl.model_precache[modnum];
if (model != ent->model)

View file

@ -36,7 +36,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//#define PROTOCOL_VERSION_BJP1 10000
//#define PROTOCOL_VERSION_BJP2 10001
#define PROTOCOL_VERSION_BJP3 10002 //spike, note that this protocol is intentionally flawed to work around mods+writebytes - svc_staticsound is limited to 8bit indexes.
//#define PROTOCOL_FTE_PEXT1 (('F'<<0) + ('T'<<8) + ('E'<<16) + ('X' << 24)) //fte extensions, provides extensions to the underlying base protocol (like 666 or even 15).
#define PROTOCOL_FTE_PEXT1 (('F'<<0) + ('T'<<8) + ('E'<<16) + ('X' << 24)) //fte extensions, provides extensions to the underlying base protocol (like 666 or even 15).
#define PROTOCOL_FTE_PEXT2 (('F'<<0) + ('T'<<8) + ('E'<<16) + ('2' << 24)) //fte extensions, provides extensions to the underlying base protocol (like 666 or even 15).
// PROTOCOL_RMQ protocol flags
@ -50,18 +50,30 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define PRFL_MOREFLAGS (1 << 31) // not supported
// PROTOCOL_FTE_PEXT(1) flags
//mostly uninteresting, mostly superseeded by PEXT2_REPLACEMENTDELTAS...
#define PEXT_CSQC 0x40000000 //csqc additions
//mostly uninteresting, any superseeded by PEXT2_REPLACEMENTDELTAS (and thus QW-only) are not listed.
//#define PEXT_LIGHTSTYLECOL 0x00000004
#define PEXT1_HLBSP 0x00000200 //hint to server to avoid messy error messages
#define PEXT1_Q2BSP 0x00020000 //hint to server to avoid messy error messages
#define PEXT1_Q3BSP 0x00040000 //hint to server to avoid messy error messages
//#define PEXT1_CUSTOMTEMPEFFECTS 0x00800000
//#define PEXT1_SPLITSCREEN 0x00100000
//#define PEXT1_SHOWPIC 0x04000000
//#define PEXT1_CHUNKEDDOWNLOADS 0x20000000
#define PEXT1_CSQC 0x40000000 //(full)csqc additions, required for csqc ents+events.
#define PEXT1_ACCEPTED_CLIENT (/*PEXT1_SUPPORTED_CLIENT|*/PEXT1_CSQC|PEXT1_Q3BSP|PEXT1_Q2BSP|PEXT1_HLBSP) //pext1 flags that we can accept from a server (aka: partial support)
//#define PEXT1_SUPPORTED_CLIENT (0) //pext1 flags that we advertise to servers (aka: full support)
//#define PEXT1_SUPPORTED_SERVER (0) //pext1 flags that we accept from clients.
// PROTOCOL_FTE_PEXT2 flags
#define PEXT2_PRYDONCURSOR 0x00000001 //a mouse cursor exposed to ssqc
#define PEXT2_PRYDONCURSOR 0x00000001 //a mouse cursor exposed to ssqc
#define PEXT2_VOICECHAT 0x00000002 //+voip or cl_voip_send 1; requires opus dll, and others to also have that same dll.
#define PEXT2_SETANGLEDELTA 0x00000004 //less annoying when teleporting.
#define PEXT2_REPLACEMENTDELTAS 0x00000008 //more compact entity deltas (can also be split across multiple packets)
#define PEXT2_MAXPLAYERS 0x00000010 //up to 255 player slots
#define PEXT2_PREDINFO 0x00000020 //provides input acks and reworks stats such that clc_clientdata becomes redundant.
#define PEXT2_NEWSIZEENCODING 0x00000040 //richer size encoding, for more precise bboxes.
#define PEXT2_ACCEPTED_CLIENT (PEXT2_SUPPORTED_CLIENT|PEXT2_NEWSIZEENCODING|PEXT2_PRYDONCURSOR) //pext2 flags that we can parse, but don't want to advertise
#define PEXT2_INFOBLOBS 0x00000080 //unbounded userinfo
#define PEXT2_ACCEPTED_CLIENT (PEXT2_SUPPORTED_CLIENT|PEXT2_NEWSIZEENCODING|PEXT2_PRYDONCURSOR|PEXT2_INFOBLOBS) //pext2 flags that we can parse, but don't want to advertise
#define PEXT2_SUPPORTED_CLIENT (PEXT2_SETANGLEDELTA|PEXT2_VOICECHAT|PEXT2_REPLACEMENTDELTAS|PEXT2_MAXPLAYERS|PEXT2_PREDINFO) //pext2 flags that we understand+support
#define PEXT2_SUPPORTED_SERVER ( PEXT2_VOICECHAT|PEXT2_REPLACEMENTDELTAS |PEXT2_PREDINFO)