Browse Source

engine: client: cl_parse_48: add a temporary hack to avoid the lag issues after changelevel on legacy servers

pull/2/head
Alibek Omarov 1 year ago
parent
commit
00765f1ff2
  1. 9
      engine/client/cl_parse_48.c

9
engine/client/cl_parse_48.c

@ -373,6 +373,8 @@ void CL_ParseLegacyServerMessage( sizebuf_t *msg, qboolean normal_message ) @@ -373,6 +373,8 @@ void CL_ParseLegacyServerMessage( sizebuf_t *msg, qboolean normal_message )
old_background = cl.background;
if( MSG_ReadOneBit( msg ))
{
int old_maxplayers = cl.maxclients;
cls.changelevel = true;
S_StopAllSounds( true );
@ -385,6 +387,13 @@ void CL_ParseLegacyServerMessage( sizebuf_t *msg, qboolean normal_message ) @@ -385,6 +387,13 @@ void CL_ParseLegacyServerMessage( sizebuf_t *msg, qboolean normal_message )
}
CL_ClearState ();
// a1ba: need to restore cl.maxclients because engine chooses
// frame backups count depending on this value
// In general, it's incorrect to call CL_InitEdicts right after
// CL_ClearState because of this bug. Some time later this logic
// should be re-done.
cl.maxclients = old_maxplayers;
CL_InitEdicts (); // re-arrange edicts
}
else Con_Printf( "Server disconnected, reconnecting\n" );

Loading…
Cancel
Save