S_LoadSound now automatically tries both with and without sound/ when loading sounds...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 26 Oct 2004 07:37:19 +0000 (07:37 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 26 Oct 2004 07:37:19 +0000 (07:37 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4710 d7cf8633-e32d-0410-b094-e92efae38249

cd_shared.c
cl_parse.c
console.c
dpvsimpledecode.c
menu.c
prvm_cmds.c
snd_main.c
snd_mem.c
snd_null.c
sound.h

index c0f0514..d9d753d 100644 (file)
@@ -112,10 +112,10 @@ void CDAudio_Play (qbyte track, qboolean looping)
        CDAudio_Stop ();
 
        // Try playing a fake track (sound file) first
-       sfx = S_PrecacheSound (va ("cdtracks/track%02u.wav", track), false, true, false);
+       sfx = S_PrecacheSound (va ("cdtracks/track%02u.wav", track), false, false);
        // FIXME: perhaps force it to be always %03u (but for compatibility?):
        if (!sfx)
-               sfx = S_PrecacheSound (va ("cdtracks/track%03u.wav", track), false, true, false);
+               sfx = S_PrecacheSound (va ("cdtracks/track%03u.wav", track), false, false);
        if (sfx != NULL)
        {
                faketrack = S_StartSound (-1, 0, sfx, vec3_origin, cdvolume, 0);
index ab11ec6..6272ccf 100644 (file)
@@ -431,7 +431,7 @@ void CL_ParseServerInfo (void)
                CL_KeepaliveMessage();
 
                // Don't lock the sfx here, S_ServerSounds already did that 
-               cl.sound_precache[i] = S_PrecacheSound(parse_sound_precache[i], true, true, false);
+               cl.sound_precache[i] = S_PrecacheSound (parse_sound_precache[i], true, false);
        }
 
        // local state
@@ -841,13 +841,13 @@ CL_ParseTEnt
 */
 void CL_InitTEnts (void)
 {
-       cl_sfx_wizhit = S_PrecacheSound ("wizard/hit.wav", false, true, true);
-       cl_sfx_knighthit = S_PrecacheSound ("hknight/hit.wav", false, true, true);
-       cl_sfx_tink1 = S_PrecacheSound ("weapons/tink1.wav", false, true, true);
-       cl_sfx_ric1 = S_PrecacheSound ("weapons/ric1.wav", false, true, true);
-       cl_sfx_ric2 = S_PrecacheSound ("weapons/ric2.wav", false, true, true);
-       cl_sfx_ric3 = S_PrecacheSound ("weapons/ric3.wav", false, true, true);
-       cl_sfx_r_exp3 = S_PrecacheSound ("weapons/r_exp3.wav", false, true, true);
+       cl_sfx_wizhit = S_PrecacheSound ("sound/wizard/hit.wav", false, true);
+       cl_sfx_knighthit = S_PrecacheSound ("sound/hknight/hit.wav", false, true);
+       cl_sfx_tink1 = S_PrecacheSound ("sound/weapons/tink1.wav", false, true);
+       cl_sfx_ric1 = S_PrecacheSound ("sound/weapons/ric1.wav", false, true);
+       cl_sfx_ric2 = S_PrecacheSound ("sound/weapons/ric2.wav", false, true);
+       cl_sfx_ric3 = S_PrecacheSound ("sound/weapons/ric3.wav", false, true);
+       cl_sfx_r_exp3 = S_PrecacheSound ("sound/weapons/r_exp3.wav", false, true);
 }
 
 void CL_ParseBeam (model_t *m, int lightning)
index e9c8797..b5c3a14 100644 (file)
--- a/console.c
+++ b/console.c
@@ -480,7 +480,7 @@ void Con_PrintToHistory(const char *txt)
        if (txt[0] == 1)
        {
                mask = 128;             // go to colored text
-               S_LocalSound ("misc/talk.wav", true);
+               S_LocalSound ("sound/misc/talk.wav");
        // play talk wav
                txt++;
        }
index f403401..9927a76 100644 (file)
@@ -398,7 +398,7 @@ void *dpvsimpledecode_open(char *filename, char **errorstring)
 
                                                                        StripExtension(filename, wavename);
                                                                        strcat(wavename, ".wav");
-                                                                       sfx = S_PrecacheSound (wavename, false, false, false);
+                                                                       sfx = S_PrecacheSound (wavename, false, false);
                                                                        if (sfx != NULL)
                                                                                s->sndchan = S_StartSound (-1, 0, sfx, vec3_origin, 1.0f, 0);
                                                                        else
diff --git a/menu.c b/menu.c
index 7cc80ea..2f0bde7 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -330,7 +330,7 @@ void M_Demo_Key (int k, char ascii)
                break;
 
        case K_ENTER:
-               S_LocalSound ("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                m_state = m_none;
                key_dest = key_game;
                Cbuf_AddText (va ("playdemo %s\n", NehahraDemos[demo_cursor].name));
@@ -338,7 +338,7 @@ void M_Demo_Key (int k, char ascii)
 
        case K_UPARROW:
        case K_LEFTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                demo_cursor--;
                if (demo_cursor < 0)
                        demo_cursor = NumberOfNehahraDemos-1;
@@ -346,7 +346,7 @@ void M_Demo_Key (int k, char ascii)
 
        case K_DOWNARROW:
        case K_RIGHTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                demo_cursor++;
                if (demo_cursor >= NumberOfNehahraDemos)
                        demo_cursor = 0;
@@ -432,13 +432,13 @@ void M_Main_Key (int key, char ascii)
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (++m_main_cursor >= MAIN_ITEMS)
                        m_main_cursor = 0;
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (--m_main_cursor < 0)
                        m_main_cursor = MAIN_ITEMS - 1;
                break;
@@ -657,13 +657,13 @@ void M_SinglePlayer_Key (int key, char ascii)
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (++m_singleplayer_cursor >= SINGLEPLAYER_ITEMS)
                        m_singleplayer_cursor = 0;
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (--m_singleplayer_cursor < 0)
                        m_singleplayer_cursor = SINGLEPLAYER_ITEMS - 1;
                break;
@@ -807,7 +807,7 @@ void M_Load_Key (int k, char ascii)
                break;
 
        case K_ENTER:
-               S_LocalSound ("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                if (!loadable[load_cursor])
                        return;
                m_state = m_none;
@@ -819,7 +819,7 @@ void M_Load_Key (int k, char ascii)
 
        case K_UPARROW:
        case K_LEFTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                load_cursor--;
                if (load_cursor < 0)
                        load_cursor = MAX_SAVEGAMES-1;
@@ -827,7 +827,7 @@ void M_Load_Key (int k, char ascii)
 
        case K_DOWNARROW:
        case K_RIGHTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                load_cursor++;
                if (load_cursor >= MAX_SAVEGAMES)
                        load_cursor = 0;
@@ -852,7 +852,7 @@ void M_Save_Key (int k, char ascii)
 
        case K_UPARROW:
        case K_LEFTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                load_cursor--;
                if (load_cursor < 0)
                        load_cursor = MAX_SAVEGAMES-1;
@@ -860,7 +860,7 @@ void M_Save_Key (int k, char ascii)
 
        case K_DOWNARROW:
        case K_RIGHTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                load_cursor++;
                if (load_cursor >= MAX_SAVEGAMES)
                        load_cursor = 0;
@@ -910,13 +910,13 @@ void M_MultiPlayer_Key (int key, char ascii)
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (++m_multiplayer_cursor >= MULTIPLAYER_ITEMS)
                        m_multiplayer_cursor = 0;
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (--m_multiplayer_cursor < 0)
                        m_multiplayer_cursor = MULTIPLAYER_ITEMS - 1;
                break;
@@ -1081,14 +1081,14 @@ void M_Setup_Key (int k, char ascii)
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                setup_cursor--;
                if (setup_cursor < 0)
                        setup_cursor = NUM_SETUP_CMDS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                setup_cursor++;
                if (setup_cursor >= NUM_SETUP_CMDS)
                        setup_cursor = 0;
@@ -1097,7 +1097,7 @@ void M_Setup_Key (int k, char ascii)
        case K_LEFTARROW:
                if (setup_cursor < 1)
                        return;
-               S_LocalSound ("misc/menu3.wav", true);
+               S_LocalSound ("sound/misc/menu3.wav");
                if (setup_cursor == 1)
                        setup_top = setup_top - 1;
                if (setup_cursor == 2)
@@ -1114,7 +1114,7 @@ void M_Setup_Key (int k, char ascii)
                if (setup_cursor < 1)
                        return;
 forward:
-               S_LocalSound ("misc/menu3.wav", true);
+               S_LocalSound ("sound/misc/menu3.wav");
                if (setup_cursor == 1)
                        setup_top = setup_top + 1;
                if (setup_cursor == 2)
@@ -1230,7 +1230,7 @@ extern cvar_t r_textshadow;
 void M_Menu_Options_AdjustSliders (int dir)
 {
        int optnum;
-       S_LocalSound ("misc/menu3.wav", true);
+       S_LocalSound ("sound/misc/menu3.wav");
 
        optnum = 7;
        if (options_cursor == optnum++)
@@ -1452,14 +1452,14 @@ void M_Options_Key (int k, char ascii)
                return;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_cursor--;
                if (options_cursor < 0)
                        options_cursor = OPTIONS_ITEMS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_cursor++;
                if (options_cursor >= OPTIONS_ITEMS)
                        options_cursor = 0;
@@ -1519,7 +1519,7 @@ extern cvar_t r_lightningbeam_qmbtexture;
 void M_Menu_Options_Effects_AdjustSliders (int dir)
 {
        int optnum;
-       S_LocalSound ("misc/menu3.wav", true);
+       S_LocalSound ("sound/misc/menu3.wav");
 
        optnum = 0;
             if (options_effects_cursor == optnum++) Cvar_SetValueQuick (&r_modellights, bound(0, r_modellights.value + dir, 8));
@@ -1630,14 +1630,14 @@ void M_Options_Effects_Key (int k, char ascii)
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_effects_cursor--;
                if (options_effects_cursor < 0)
                        options_effects_cursor = OPTIONS_EFFECTS_ITEMS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_effects_cursor++;
                if (options_effects_cursor >= OPTIONS_EFFECTS_ITEMS)
                        options_effects_cursor = 0;
@@ -1676,7 +1676,7 @@ extern cvar_t r_shadow_realtime_world_shadows;
 void M_Menu_Options_Graphics_AdjustSliders (int dir)
 {
        int optnum;
-       S_LocalSound ("misc/menu3.wav", true);
+       S_LocalSound ("sound/misc/menu3.wav");
  
        optnum = 0;
 
@@ -1729,14 +1729,14 @@ void M_Options_Graphics_Key (int k, char ascii)
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_graphics_cursor--;
                if (options_graphics_cursor < 0)
                        options_graphics_cursor = OPTIONS_GRAPHICS_ITEMS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_graphics_cursor++;
                if (options_graphics_cursor >= OPTIONS_GRAPHICS_ITEMS)
                        options_graphics_cursor = 0;
@@ -1772,7 +1772,7 @@ void M_Menu_Options_ColorControl_AdjustSliders (int dir)
 {
        int optnum;
        float f;
-       S_LocalSound ("misc/menu3.wav", true);
+       S_LocalSound ("sound/misc/menu3.wav");
 
        optnum = 1;
        if (options_colorcontrol_cursor == optnum++)
@@ -1976,14 +1976,14 @@ void M_Options_ColorControl_Key (int k, char ascii)
                return;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_colorcontrol_cursor--;
                if (options_colorcontrol_cursor < 0)
                        options_colorcontrol_cursor = OPTIONS_COLORCONTROL_ITEMS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                options_colorcontrol_cursor++;
                if (options_colorcontrol_cursor >= OPTIONS_COLORCONTROL_ITEMS)
                        options_colorcontrol_cursor = 0;
@@ -2322,7 +2322,7 @@ void M_Keys_Key (int k, char ascii)
 
        if (bind_grab)
        {       // defining a key
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                if (k == K_ESCAPE)
                {
                        bind_grab = false;
@@ -2345,7 +2345,7 @@ void M_Keys_Key (int k, char ascii)
 
        case K_LEFTARROW:
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                do
                {
                        keys_cursor--;
@@ -2357,7 +2357,7 @@ void M_Keys_Key (int k, char ascii)
 
        case K_DOWNARROW:
        case K_RIGHTARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                do
                {
                        keys_cursor++;
@@ -2369,7 +2369,7 @@ void M_Keys_Key (int k, char ascii)
 
        case K_ENTER:           // go into bind mode
                M_FindKeysForCommand (bindnames[keys_cursor][0], keys);
-               S_LocalSound ("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                if (keys[NUMKEYS - 1] != -1)
                        M_UnbindCommand (bindnames[keys_cursor][0]);
                bind_grab = true;
@@ -2377,7 +2377,7 @@ void M_Keys_Key (int k, char ascii)
 
        case K_BACKSPACE:               // delete bindings
        case K_DEL:                             // delete bindings
-               S_LocalSound ("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                M_UnbindCommand (bindnames[keys_cursor][0]);
                break;
        }
@@ -2505,7 +2505,7 @@ void M_Video_Draw (void)
 
 void M_Menu_Video_AdjustSliders (int dir)
 {
-       S_LocalSound ("misc/menu3.wav", true);
+       S_LocalSound ("sound/misc/menu3.wav");
 
        switch (video_cursor)
        {
@@ -2551,7 +2551,7 @@ void M_Video_Key (int key, char ascii)
                        Cvar_SetValueQuick(&vid_height, current_vid_height);
                        Cvar_SetValueQuick(&vid_bitsperpixel, current_vid_bitsperpixel);
 
-                       S_LocalSound ("misc/menu1.wav", true);
+                       S_LocalSound ("sound/misc/menu1.wav");
                        M_Menu_Options_f ();
                        break;
 
@@ -2569,14 +2569,14 @@ void M_Video_Key (int key, char ascii)
                        break;
 
                case K_UPARROW:
-                       S_LocalSound ("misc/menu1.wav", true);
+                       S_LocalSound ("sound/misc/menu1.wav");
                        video_cursor--;
                        if (video_cursor < 0)
                                video_cursor = VIDEO_ITEMS-1;
                        break;
 
                case K_DOWNARROW:
-                       S_LocalSound ("misc/menu1.wav", true);
+                       S_LocalSound ("sound/misc/menu1.wav");
                        video_cursor++;
                        if (video_cursor >= VIDEO_ITEMS)
                                video_cursor = 0;
@@ -2880,14 +2880,14 @@ void M_LanConfig_Key (int key, char ascii)
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                lanConfig_cursor--;
                if (lanConfig_cursor < 0)
                        lanConfig_cursor = NUM_LANCONFIG_CMDS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                lanConfig_cursor++;
                if (lanConfig_cursor >= NUM_LANCONFIG_CMDS)
                        lanConfig_cursor = 0;
@@ -3719,14 +3719,14 @@ void M_GameOptions_Key (int key, char ascii)
                break;
 
        case K_UPARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                gameoptions_cursor--;
                if (gameoptions_cursor < 0)
                        gameoptions_cursor = NUM_GAMEOPTIONS-1;
                break;
 
        case K_DOWNARROW:
-               S_LocalSound ("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                gameoptions_cursor++;
                if (gameoptions_cursor >= NUM_GAMEOPTIONS)
                        gameoptions_cursor = 0;
@@ -3735,19 +3735,19 @@ void M_GameOptions_Key (int key, char ascii)
        case K_LEFTARROW:
                if (gameoptions_cursor == 0)
                        break;
-               S_LocalSound ("misc/menu3.wav", true);
+               S_LocalSound ("sound/misc/menu3.wav");
                M_NetStart_Change (-1);
                break;
 
        case K_RIGHTARROW:
                if (gameoptions_cursor == 0)
                        break;
-               S_LocalSound ("misc/menu3.wav", true);
+               S_LocalSound ("sound/misc/menu3.wav");
                M_NetStart_Change (1);
                break;
 
        case K_ENTER:
-               S_LocalSound ("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                if (gameoptions_cursor == 0)
                {
                        if (sv.active)
@@ -3862,7 +3862,7 @@ void M_ServerList_Key(int k, char ascii)
 
        case K_UPARROW:
        case K_LEFTARROW:
-               S_LocalSound("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                slist_cursor--;
                if (slist_cursor < 0)
                        slist_cursor = hostCacheCount - 1;
@@ -3870,14 +3870,14 @@ void M_ServerList_Key(int k, char ascii)
 
        case K_DOWNARROW:
        case K_RIGHTARROW:
-               S_LocalSound("misc/menu1.wav", true);
+               S_LocalSound ("sound/misc/menu1.wav");
                slist_cursor++;
                if (slist_cursor >= hostCacheCount)
                        slist_cursor = 0;
                break;
 
        case K_ENTER:
-               S_LocalSound("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                Cbuf_AddText(va("connect \"%s\"\n", hostcache[slist_cursor].cname));
                break;
 
@@ -4069,7 +4069,7 @@ void M_Draw (void)
 
        if (m_entersound)
        {
-               S_LocalSound ("misc/menu2.wav", true);
+               S_LocalSound ("sound/misc/menu2.wav");
                m_entersound = false;
        }
 
index c9ecfc4..5dc7a50 100644 (file)
@@ -627,7 +627,7 @@ void VM_localsound(void)
 
        s = PRVM_G_STRING(OFS_PARM0);
 
-       if(!S_LocalSound(s, true))
+       if(!S_LocalSound (s))
        {
                Con_Printf("VM_localsound: Failed to play %s for %s !\n", s, PRVM_NAME);
                PRVM_G_FLOAT(OFS_RETURN) = -4;
@@ -1138,7 +1138,7 @@ void VM_precache_sound (void)
        PRVM_G_INT(OFS_RETURN) = PRVM_G_INT(OFS_PARM0);
        VM_CheckEmptyString (s);
        
-       if(!S_PrecacheSound(s,true, true, true))
+       if(!S_PrecacheSound (s,true, true))
                Con_Printf("VM_precache_sound: Failed to load %s for %s\n", s, PRVM_NAME);
 }
 
index a360906..143eeaa 100644 (file)
@@ -227,29 +227,26 @@ S_FindName
 
 ==================
 */
-sfx_t *S_FindName (const char *name, qboolean stdpath)
+sfx_t *S_FindName (const char *name)
 {
        sfx_t *sfx;
-       size_t len;
-       char namebuffer [MAX_QPATH];
 
        if (!snd_initialized.integer)
                return NULL;
 
        // Add the default sound directory to the path
-       len = snprintf (namebuffer, sizeof (namebuffer), stdpath ? "sound/%s" : "%s", name);
-       if (len >= sizeof (namebuffer))
+       if (strlen (name) >= sizeof (sfx->name))
                Host_Error ("S_FindName: sound name too long (%s)", name);
 
        // Look for this sound in the list of known sfx
        for (sfx = known_sfx; sfx != NULL; sfx = sfx->next)
-               if(!strcmp (sfx->name, namebuffer))
+               if(!strcmp (sfx->name, name))
                        return sfx;
 
        // Add a sfx_t struct for this sound
        sfx = Mem_Alloc (snd_mempool, sizeof (*sfx));
        memset (sfx, 0, sizeof(*sfx));
-       strlcpy (sfx->name, namebuffer, sizeof (sfx->name));
+       strlcpy (sfx->name, name, sizeof (sfx->name));
        sfx->next = known_sfx;
        known_sfx = sfx;
 
@@ -306,8 +303,8 @@ void S_ServerSounds (char serversound [][MAX_QPATH], unsigned int numsounds)
        unsigned int i;
 
        // Start the ambient sounds and make them loop
-       channels[AMBIENT_WATER].sfx = S_PrecacheSound ("ambience/water1.wav", false, true, true);
-       channels[AMBIENT_SKY].sfx = S_PrecacheSound ("ambience/wind2.wav", false, true, true);
+       channels[AMBIENT_WATER].sfx = S_PrecacheSound ("sound/ambience/water1.wav", false, true);
+       channels[AMBIENT_SKY].sfx = S_PrecacheSound ("sound/ambience/wind2.wav", false, true);
        for (i = 0; i < NUM_AMBIENTS; i++)
                channels[i].flags |= CHANNELFLAG_FORCELOOP;
 
@@ -322,7 +319,7 @@ void S_ServerSounds (char serversound [][MAX_QPATH], unsigned int numsounds)
        // Add 1 lock and the SFXFLAG_SERVERSOUND flag to each sfx in "serversound"
        for (i = 1; i < numsounds; i++)
        {
-               sfx = S_FindName (serversound[i], true);
+               sfx = S_FindName (serversound[i]);
                if (sfx != NULL)
                {
                        sfx->locks++;
@@ -351,14 +348,14 @@ S_PrecacheSound
 
 ==================
 */
-sfx_t *S_PrecacheSound (const char *name, qboolean complain, qboolean stdpath, qboolean lock)
+sfx_t *S_PrecacheSound (const char *name, qboolean complain, qboolean lock)
 {
        sfx_t *sfx;
 
        if (!snd_initialized.integer)
                return NULL;
 
-       sfx = S_FindName (name, stdpath);
+       sfx = S_FindName (name);
        if (sfx == NULL)
                return NULL;
 
@@ -941,7 +938,7 @@ static void S_Play_Common(float fvol, float attenuation)
                        snprintf(name, sizeof(name), "%s.wav", Cmd_Argv(i));
                else
                        strlcpy(name, Cmd_Argv(i), sizeof(name));
-               sfx = S_PrecacheSound(name, true, true, false);
+               sfx = S_PrecacheSound (name, true, false);
 
                // If we need to get the volume from the command line
                if (fvol == -1.0f)
@@ -1003,7 +1000,7 @@ void S_SoundList(void)
 }
 
 
-qboolean S_LocalSound (const char *sound, qboolean stdpath)
+qboolean S_LocalSound (const char *sound)
 {
        sfx_t   *sfx;
        int             ch_ind;
@@ -1011,7 +1008,7 @@ qboolean S_LocalSound (const char *sound, qboolean stdpath)
        if (!snd_initialized.integer || nosound.integer)
                return true;
 
-       sfx = S_PrecacheSound (sound, true, stdpath, false);
+       sfx = S_PrecacheSound (sound, true, false);
        if (!sfx)
        {
                Con_Printf("S_LocalSound: can't precache %s\n", sound);
index a2f4e47..f152120 100644 (file)
--- a/snd_mem.c
+++ b/snd_mem.c
@@ -153,9 +153,8 @@ S_LoadSound
 */
 qboolean S_LoadSound (sfx_t *s, qboolean complain)
 {
-       char namebuffer[MAX_QPATH];
+       char namebuffer[MAX_QPATH + 16];
        size_t len;
-       qboolean modified_name = false;
 
        if (!shm || !shm->format.speed)
                return false;
@@ -172,31 +171,43 @@ qboolean S_LoadSound (sfx_t *s, qboolean complain)
                return true;
        }
 
-       len = strlcpy (namebuffer, s->name, sizeof (namebuffer));
+       // LordHavoc: if the sound filename does not begin with sound/, try adding it
+       if (strncasecmp(s->name, "sound/", 6))
+       {
+               len = snprintf (namebuffer, sizeof(namebuffer), "sound/%s", s->name);
+               if (len >= sizeof (namebuffer))
+               {
+                       // name too long
+                       Con_DPrintf("S_LoadSound: name \"%s\" is too long\n", s->name);
+                       return false;
+               }
+               if (S_LoadWavFile (namebuffer, s))
+                       return true;
+               if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".wav"))
+                       strcpy (namebuffer + len - 3, "ogg");
+               if (OGG_LoadVorbisFile (namebuffer, s))
+                       return true;
+       }
+
+       // LordHavoc: then try without the added sound/ as wav and ogg
+       len = snprintf (namebuffer, sizeof(namebuffer), "%s", s->name);
        if (len >= sizeof (namebuffer))
+       {
+               // name too long
+               Con_DPrintf("S_LoadSound: name \"%s\" is too long\n", s->name);
                return false;
-
-       // Try to load it as a WAV file
+       }
        if (S_LoadWavFile (namebuffer, s))
                return true;
-
-       // Else, try to load it as an Ogg Vorbis file
-       if (!strcasecmp (namebuffer + len - 4, ".wav"))
-       {
+       if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".wav"))
                strcpy (namebuffer + len - 3, "ogg");
-               modified_name = true;
-       }
        if (OGG_LoadVorbisFile (namebuffer, s))
                return true;
 
        // Can't load the sound!
        s->flags |= SFXFLAG_FILEMISSING;
        if (complain)
-       {
-               if (modified_name)
-                       strcpy (namebuffer + len - 3, "wav");
-               Con_Printf("Couldn't load %s\n", namebuffer);
-       }
+               Con_Printf("S_LoadSound: Couldn't load \"%s\"\n", s->name);
        return false;
 }
 
index 6e089e6..c276f72 100755 (executable)
@@ -78,7 +78,7 @@ void S_SetChannelVolume (unsigned int ch_ind, float fvol)
 {
 }
 
-sfx_t *S_PrecacheSound (const char *sample, qboolean complain, qboolean stdpath, qboolean lock)
+sfx_t *S_PrecacheSound (const char *sample, qboolean complain, qboolean lock)
 {
        return NULL;
 }
@@ -99,7 +99,7 @@ void S_ExtraUpdate (void)
 {
 }
 
-qboolean S_LocalSound (const char *s, qboolean stdpath)
+qboolean S_LocalSound (const char *s)
 {
        return false;
 }
diff --git a/sound.h b/sound.h
index 2768279..b571be4 100644 (file)
--- a/sound.h
+++ b/sound.h
@@ -62,13 +62,13 @@ void S_Shutdown (void);
 void S_Update(const matrix4x4_t *listenermatrix);
 void S_ExtraUpdate (void);
 
-sfx_t *S_PrecacheSound (const char *sample, qboolean complain, qboolean stdpath, qboolean lock);
+sfx_t *S_PrecacheSound (const char *sample, qboolean complain, qboolean lock);
 void S_ServerSounds (char serversound [][MAX_QPATH], unsigned int numsounds);
 void S_UnlockSfx (sfx_t *sfx);
 
 // S_StartSound returns the channel index, or -1 if an error occurred
 int S_StartSound (int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float fvol, float attenuation);
-qboolean S_LocalSound (const char *s, qboolean stdpath);
+qboolean S_LocalSound (const char *s);
 
 void S_StaticSound (sfx_t *sfx, vec3_t origin, float fvol, float attenuation);
 void S_StopSound (int entnum, int entchannel);