From a03019f5e465f170fb5bd4373f2c45d6ceaa5911 Mon Sep 17 00:00:00 2001 From: SNMetamorph <25657591+SNMetamorph@users.noreply.github.com> Date: Sat, 18 Mar 2023 23:55:40 +0400 Subject: [PATCH] engine: server: sv_init: enabled handling sound resources specifically This is for timely precaching on client side. Otherwise, files are being downloaded to client, but not precached immediatly after it, and therefore causing a late precaching of sound (obvious, this is bad) --- engine/server/sv_init.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/engine/server/sv_init.c b/engine/server/sv_init.c index a21d7cdd..771b5c93 100644 --- a/engine/server/sv_init.c +++ b/engine/server/sv_init.c @@ -276,9 +276,17 @@ model_t *SV_ModelHandle( int modelindex ) return sv.models[modelindex]; } +static resourcetype_t SV_DetermineResourceType( const char *filename ) +{ + if( !Q_strncmp( filename, "sound/", 6 ) && Sound_SupportedFileFormat( COM_FileExtension( filename ))) + return t_sound; + else + return t_generic; +} + void SV_ReadResourceList( const char *filename ) { - string token; + string token; byte *afile; char *pfile; @@ -295,8 +303,23 @@ void SV_ReadResourceList( const char *filename ) if( !COM_IsSafeFileToDownload( token )) continue; - Con_DPrintf( " %s\n", token ); - SV_GenericIndex( token ); + COM_FixSlashes( token ); + resourcetype_t restype = SV_DetermineResourceType( token ); + Con_DPrintf( " %s (%s)\n", token, COM_GetResourceTypeName( restype )); + switch( restype ) + { + // TODO do we need to handle other resource types specifically too? + case t_sound: + { + const char *filepath = token; + filepath += 6; // skip "sound/" part + SV_SoundIndex( filepath ); + break; + } + default: + SV_GenericIndex( token ); + break; + } } Con_DPrintf( "----------------------------------\n" );