]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_mem.c
added r_drawfog cvar at esteel's request
[xonotic/darkplaces.git] / snd_mem.c
index 44e33d16cdf5be80291b1d0c45bed95de3944252..2678da63b0b2c00d17b7360d051b9587ea17f41b 100644 (file)
--- a/snd_mem.c
+++ b/snd_mem.c
@@ -323,48 +323,58 @@ qboolean S_LoadSound (sfx_t *sfx, qboolean complain)
        // Initialize volume peak to 0; if ReplayGain is supported, the loader will change this away
        sfx->volume_peak = 0.0;
 
+       if (developer_loading.integer)
+               Con_Printf("loading sound %s\n", sfx->name);
+
        // LordHavoc: if the sound filename does not begin with sound/, try adding it
        if (strncasecmp(sfx->name, "sound/", 6))
        {
-               len = dpsnprintf (namebuffer, sizeof(namebuffer), "sound/%s", sfx->name);
-               if (len < 0)
-               {
-                       // name too long
-                       Con_DPrintf("S_LoadSound: name \"%s\" is too long\n", sfx->name);
-                       return false;
-               }
-               if (S_LoadWavFile (namebuffer, sfx))
-                       return true;
+               dpsnprintf (namebuffer, sizeof(namebuffer), "sound/%s", sfx->name);
+               len = strlen(namebuffer);
                if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".wav"))
+               {
+                       if (S_LoadWavFile (namebuffer, sfx))
+                               return true;
                        memcpy (namebuffer + len - 3, "ogg", 4);
+               }
                if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".ogg"))
+               {
                        if (OGG_LoadVorbisFile (namebuffer, sfx))
                                return true;
-               if (ModPlug_LoadModPlugFile (namebuffer, sfx))
-                       return true;
+               }
+               else
+               {
+                       if (ModPlug_LoadModPlugFile (namebuffer, sfx))
+                               return true;
+               }
        }
 
        // LordHavoc: then try without the added sound/ as wav and ogg
-       len = dpsnprintf (namebuffer, sizeof(namebuffer), "%s", sfx->name);
-       if (len < 0)
-       {
-               // name too long
-               Con_DPrintf("S_LoadSound: name \"%s\" is too long\n", sfx->name);
-               return false;
-       }
-       if (S_LoadWavFile (namebuffer, sfx))
-               return true;
+       dpsnprintf (namebuffer, sizeof(namebuffer), "%s", sfx->name);
+       len = strlen(namebuffer);
+       // request foo.wav: tries foo.wav, then foo.ogg
+       // request foo.ogg: tries foo.ogg only
+       // request foo.mod: tries foo.mod only
        if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".wav"))
+       {
+               if (S_LoadWavFile (namebuffer, sfx))
+                       return true;
                memcpy (namebuffer + len - 3, "ogg", 4);
+       }
        if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".ogg"))
+       {
                if (OGG_LoadVorbisFile (namebuffer, sfx))
                        return true;
-       if (ModPlug_LoadModPlugFile (namebuffer, sfx))
-               return true;
+       }
+       else
+       {
+               if (ModPlug_LoadModPlugFile (namebuffer, sfx))
+                       return true;
+       }
 
        // Can't load the sound!
        sfx->flags |= SFXFLAG_FILEMISSING;
        if (complain)
-               Con_DPrintf("S_LoadSound: Couldn't load \"%s\"\n", sfx->name);
+               Con_DPrintf("failed to load sound \"%s\"\n", sfx->name);
        return false;
 }