engine: client: implement GoldSrc fragment size limits

This commit is contained in:
Alibek Omarov 2024-10-16 07:00:10 +03:00
parent 12edd782c6
commit 9f6372b305

View file

@ -204,15 +204,33 @@ static void CL_CheckClientState( void )
int CL_GetFragmentSize( void *unused, fragsize_t mode )
{
if( mode == FRAGSIZE_SPLIT )
return 0;
if( cls.legacymode == PROTO_GOLDSRC )
{
switch( mode )
{
case FRAGSIZE_SPLIT:
return 1200; // MAX_RELIABLE_PAYLOAD
case FRAGSIZE_UNRELIABLE:
return 1400; // MAX_ROUTABLE_PACKET
case FRAGSIZE_FRAG:
if( cls.state == ca_active )
return bound( 16, cl_dlmax.value, 1024 );
return 128;
}
}
if( mode == FRAGSIZE_UNRELIABLE )
switch( mode )
{
case FRAGSIZE_SPLIT:
return 0;
case FRAGSIZE_UNRELIABLE:
return NET_MAX_MESSAGE;
default:
break;
}
if( Netchan_IsLocal( &cls.netchan ))
return FRAGMENT_LOCAL_SIZE;
return cl_upmax.value;
}