瀏覽代碼

PlayMusicStream now uses index

Joshua Reisenauer 9 年之前
父節點
當前提交
9737c58054
共有 3 個文件被更改,包括 21 次插入12 次删除
  1. 19 10
      src/audio.c
  2. 1 1
      src/audio.h
  3. 1 1
      src/raylib.h

+ 19 - 10
src/audio.c

@@ -763,19 +763,18 @@ void SetSoundPitch(Sound sound, float pitch)
 //----------------------------------------------------------------------------------
 
 // Start music playing (open stream)
-void PlayMusicStream(char *fileName)
+// returns 0 on success
+int PlayMusicStream(int musicIndex, char *fileName)
 {
-    int musicIndex;
+    int musicIndex = index;
     int mixIndex;
-    for(musicIndex = 0; musicIndex < MAX_MUSIC_STREAMS; musicIndex++) // find empty music slot
-    {
-        if(currentMusic[musicIndex].stream == NULL && !currentMusic[musicIndex].chipTune) break;
-        else if(musicIndex = MAX_MUSIC_STREAMS - 1) return;
-    }
+    
+    if(currentMusic[musicIndex].stream != NULL || currentMusic[musicIndex].chipTune) return 1; // error
+    
     for(mixIndex = 0; mixIndex < MAX_AUDIO_CONTEXTS; mixIndex++) // find empty mix channel slot
     {
         if(mixChannelsActive_g[mixIndex] == NULL) break;
-        else if(musicIndex = MAX_AUDIO_CONTEXTS - 1) return;
+        else if(musicIndex = MAX_AUDIO_CONTEXTS - 1) return 2; // error
     }
     
     
@@ -787,6 +786,7 @@ void PlayMusicStream(char *fileName)
         if (currentMusic[musicIndex].stream == NULL)
         {
             TraceLog(WARNING, "[%s] OGG audio file could not be opened", fileName);
+            return 3; // error
         }
         else
         {
@@ -828,9 +828,18 @@ void PlayMusicStream(char *fileName)
             
             currentMusic[musicIndex].ctx = InitAudioContext(48000, mixIndex, 2, true);
         }
-        else TraceLog(WARNING, "[%s] XM file could not be opened", fileName);
+        else
+        {
+            TraceLog(WARNING, "[%s] XM file could not be opened", fileName);
+            return 4; // error
+        }
+    }
+    else
+    {
+        TraceLog(WARNING, "[%s] Music extension not recognized, it can't be loaded", fileName);
+        return 5; // error
     }
-    else TraceLog(WARNING, "[%s] Music extension not recognized, it can't be loaded", fileName);
+    return 0; // normal return
 }
 
 // Stop music playing for individual music index of currentMusic array (close stream)

+ 1 - 1
src/audio.h

@@ -100,7 +100,7 @@ bool IsSoundPlaying(Sound sound);                               // Check if a so
 void SetSoundVolume(Sound sound, float volume);                 // Set volume for a sound (1.0 is max level)
 void SetSoundPitch(Sound sound, float pitch);                   // Set pitch for a sound (1.0 is base level)
 
-void PlayMusicStream(char *fileName);                           // Start music playing (open stream)
+int PlayMusicStream(int musicIndex, char *fileName);            // Start music playing (open stream)
 void UpdateMusicStream(void);                                   // Updates buffers for music streaming
 void StopMusicStream(int index);                                // Stop music playing (close stream)
 void PauseMusicStream(int index);                               // Pause music playing

+ 1 - 1
src/raylib.h

@@ -894,7 +894,7 @@ bool IsSoundPlaying(Sound sound);                               // Check if a so
 void SetSoundVolume(Sound sound, float volume);                 // Set volume for a sound (1.0 is max level)
 void SetSoundPitch(Sound sound, float pitch);                   // Set pitch for a sound (1.0 is base level)
 
-void PlayMusicStream(char *fileName);                           // Start music playing (open stream)
+int PlayMusicStream(int musicIndex, char *fileName);            // Start music playing (open stream)
 void UpdateMusicStream(void);                                   // Updates buffers for music streaming
 void StopMusicStream(int index);                                // Stop music playing (close stream)
 void PauseMusicStream(int index);                               // Pause music playing