]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
1. also play sounds outside cdtracks/ as CD tracks
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 15 Dec 2008 09:31:55 +0000 (09:31 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 15 Dec 2008 09:31:55 +0000 (09:31 +0000)
2. "cdaudio 4": play a random CD track for named tracks

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8589 d7cf8633-e32d-0410-b094-e92efae38249

cd_shared.c

index ebe091dc89ac63c3c4ab6cf33213ba8691422ae8..36bae1272e17fd35cc3c27e1c29eaa747d045494 100644 (file)
@@ -43,7 +43,7 @@ extern void CDAudio_SysShutdown (void);
 
 // used by menu to ghost CD audio slider
 cvar_t cdaudioinitialized = {CVAR_READONLY,"cdaudioinitialized","0","indicates if CD Audio system is active"};
-cvar_t cdaudio = {CVAR_SAVE,"cdaudio","1","CD playing mode (0 = never access CD drive, 1 = play CD tracks if no replacement available, 2 = play fake tracks if no CD track available, 3 = play only real CD tracks)"};
+cvar_t cdaudio = {CVAR_SAVE,"cdaudio","1","CD playing mode (0 = never access CD drive, 1 = play CD tracks if no replacement available, 2 = play fake tracks if no CD track available, 3 = play only real CD tracks, 4 = play real CD tracks even instead of named fake tracks)"};
 
 static qboolean wasPlaying = false;
 static qboolean initialized = false;
@@ -187,11 +187,29 @@ void CDAudio_Play_byName (const char *trackname, qboolean looping)
 
                if(cdaudio.integer == 2) // prefer real CD track over fake
                {
-                               if(CDAudio_Play_real(track, looping, false))
-                                       goto success;
+                       if(CDAudio_Play_real(track, looping, false))
+                               goto success;
                }
        }
 
+       if(cdaudio.integer == 4) // only play real CD tracks, EVEN instead of fake tracks!
+       {
+               if(CDAudio_Play_real(track, looping, false))
+                       goto success;
+               
+               if(cdValid && maxTrack > 0)
+               {
+                       track = 1 + (rand() % maxTrack);
+                       if(CDAudio_Play_real(track, looping, true))
+                               goto success;
+               }
+               else
+               {
+                       Con_Print ("No CD in player.\n");
+               }
+               return;
+       }
+
        // Try playing a fake track (sound file) first
        if(track >= 1)
        {
@@ -208,6 +226,10 @@ void CDAudio_Play_byName (const char *trackname, qboolean looping)
                sfx = S_PrecacheSound (va("cdtracks/%s.wav", trackname), false, false);
                if (sfx == NULL || !S_IsSoundPrecached (sfx))
                        sfx = S_PrecacheSound (va("cdtracks/%s", trackname), false, false);
+               if (sfx == NULL || !S_IsSoundPrecached (sfx))
+                       sfx = S_PrecacheSound (va("%s.wav", trackname), false, false);
+               if (sfx == NULL || !S_IsSoundPrecached (sfx))
+                       sfx = S_PrecacheSound (va("%s", trackname), false, false);
        }
        if (sfx != NULL)
        {