From 1db3e2ee25ff7b4240f12211473af86af9b017f5 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Tue, 31 Mar 2020 09:28:06 +0200 Subject: Mixing the sounds like a DJ --- src/cgame/cg_local.h | 3 ++- src/cgame/cg_main.c | 34 ++++++++++++++++++++++++++++++++++ src/cgame/cg_syscalls.c | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h index f35c438..1a71e3b 100644 --- a/src/cgame/cg_local.h +++ b/src/cgame/cg_local.h @@ -1968,7 +1968,8 @@ void trap_S_UpdateEntityPosition( int entityNum, const vec3_t origin ); // respatialize recalculates the volumes of sound as they should be heard by the // given entityNum and position void trap_S_Respatialize( int entityNum, const vec3_t origin, vec3_t axis[3], int inwater ); -sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ); // returns buzz if not found +sfxHandle_t Hacked_S_RegisterSound( const char *sample, qboolean compressed ); // returns buzz if not found +#define trap_S_RegisterSound Hacked_S_RegisterSound void trap_S_StartBackgroundTrack( const char *intro, const char *loop ); // empty name stops music void trap_S_StopBackgroundTrack( void ); diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c index 45e2506..5495a6f 100644 --- a/src/cgame/cg_main.c +++ b/src/cgame/cg_main.c @@ -2124,3 +2124,37 @@ char *CG_VoIPString( void ) return voipString; } + +/* +================ +Hacked_S_RegisterSound + +Replace sounds in the game without having to actually mess with the .pk3s +================ +*/ + +#undef trap_S_RegisterSound +// This is the *actual* prototype +sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ); + +struct { char *to, *from; } replacements[ ] = +{ + { "sound/player/level0/taunt.wav", "models/weapons/rifle/flash0.wav" }, +}; + +int num_replacements = sizeof( replacements ) / sizeof( replacements[ 0 ] ); + +sfxHandle_t Hacked_S_RegisterSound( const char *path, qboolean compressed ) +{ + int i; + + for ( i = 0; i < num_replacements; i++ ) + { + if ( !Q_stricmp( path, replacements[ i ].from ) ) + { + return trap_S_RegisterSound( replacements[ i ].to, compressed ); + } + } + + return trap_S_RegisterSound( path, compressed ); +} diff --git a/src/cgame/cg_syscalls.c b/src/cgame/cg_syscalls.c index aa42019..ad227e1 100644 --- a/src/cgame/cg_syscalls.c +++ b/src/cgame/cg_syscalls.c @@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "cg_local.h" +#undef trap_S_RegisterSound static intptr_t (QDECL *syscall)( intptr_t arg, ... ) = (intptr_t (QDECL *)( intptr_t, ...))-1; -- cgit