From 0e73a77c0b3f0be0831cf597b150ed0e7460dcaa Mon Sep 17 00:00:00 2001 From: Alexander Eckart Date: Thu, 23 Feb 2012 20:19:19 +0100 Subject: [PATCH] do not play bg music files twice until all files are played --- Vocaluxe/Base/CBackgroundMusic.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs index c5a9e6ff..403a64f9 100644 --- a/Vocaluxe/Base/CBackgroundMusic.cs +++ b/Vocaluxe/Base/CBackgroundMusic.cs @@ -16,6 +16,7 @@ namespace Vocaluxe.Base private static string _CurrentMusicFilePath = String.Empty; private static List _AllFileNames = new List(); + private static List _NotPlayedFileNames = new List(); private static List _BGMusicFileNames = new List(); private static bool _OwnMusicAdded; @@ -84,7 +85,12 @@ namespace Vocaluxe.Base { Stop(); - _CurrentMusicFilePath = _AllFileNames[CGame.Rand.Next(_AllFileNames.Count)]; + if (_NotPlayedFileNames.Count == 0) + _NotPlayedFileNames.AddRange(_AllFileNames); + + _CurrentMusicFilePath = _NotPlayedFileNames[CGame.Rand.Next(_NotPlayedFileNames.Count)]; + _NotPlayedFileNames.Remove(_CurrentMusicFilePath); + _CurrentMusicStream = CSound.Load(_CurrentMusicFilePath); CSound.SetStreamVolume(_CurrentMusicStream, 0f); Play(); @@ -105,6 +111,7 @@ namespace Vocaluxe.Base foreach (CSong song in CSongs.AllSongs) { _AllFileNames.Add(song.GetMP3()); + _NotPlayedFileNames.Add(song.GetMP3()); } } _OwnMusicAdded = true; @@ -113,9 +120,13 @@ namespace Vocaluxe.Base public static void RemoveOwnMusic() { _AllFileNames.Clear(); + _NotPlayedFileNames.Clear(); if (_BackgroundMusicAdded) + { _AllFileNames.AddRange(_BGMusicFileNames); + _NotPlayedFileNames.AddRange(_BGMusicFileNames); + } if (IsPlaying() && !IsBackgroundFile(_CurrentMusicFilePath) || _AllFileNames.Count == 0) Next(); @@ -128,6 +139,7 @@ namespace Vocaluxe.Base if (!_BackgroundMusicAdded) { _AllFileNames.AddRange(_BGMusicFileNames); + _NotPlayedFileNames.AddRange(_BGMusicFileNames); _BackgroundMusicAdded = true; } }