aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/AudioManager.cs
diff options
context:
space:
mode:
authorAShifter <[email protected]>2017-06-05 09:49:46 -0600
committerAShifter <[email protected]>2017-06-05 09:49:46 -0600
commit61c906e596145bbedd60725c6dcee68c34a27907 (patch)
treecd7a00d501affe96028bfb21a8dec90c2ee63f2c /ShiftOS.WinForms/AudioManager.cs
parent66ea2cf2fdeeaa025bd22961a0400423233c505d (diff)
parent3e11eca70481841b6e2f2253d667944779cfd5fb (diff)
downloadshiftos_thereturn-61c906e596145bbedd60725c6dcee68c34a27907.tar.gz
shiftos_thereturn-61c906e596145bbedd60725c6dcee68c34a27907.tar.bz2
shiftos_thereturn-61c906e596145bbedd60725c6dcee68c34a27907.zip
Merge remote-tracking branch 'refs/remotes/shiftos-game/master'
Diffstat (limited to 'ShiftOS.WinForms/AudioManager.cs')
-rw-r--r--ShiftOS.WinForms/AudioManager.cs98
1 files changed, 98 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/AudioManager.cs b/ShiftOS.WinForms/AudioManager.cs
index 5c43ac4..afa0d78 100644
--- a/ShiftOS.WinForms/AudioManager.cs
+++ b/ShiftOS.WinForms/AudioManager.cs
@@ -24,8 +24,10 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
namespace ShiftOS.WinForms
@@ -37,5 +39,101 @@ namespace ShiftOS.WinForms
{
}
+
+ internal static byte[] GetRandomSong()
+ {
+ var r = new Random().Next(1, 10);
+ switch (r)
+ {
+ case 1:
+ return Properties.Resources.Ambient1;
+ case 2:
+ return Properties.Resources.Ambient2;
+ case 3:
+ return Properties.Resources.Ambient3;
+ case 4:
+ return Properties.Resources.Ambient4;
+ case 5:
+ return Properties.Resources.Ambient5;
+ case 6:
+ return Properties.Resources.Ambient6;
+ case 7:
+ return Properties.Resources.Ambient7;
+ case 8:
+ return Properties.Resources.Ambient8;
+ default:
+ return Properties.Resources.Ambient9;
+
+ }
+ }
+
+ internal static void StartAmbientLoop()
+ {
+ var athread = new Thread(() =>
+ {
+ MemoryStream str = null;
+ NAudio.Wave.Mp3FileReader mp3 = null;
+ NAudio.Wave.WaveOut o = null;
+ bool shuttingDown = false;
+
+ Engine.AppearanceManager.OnExit += () =>
+ {
+ shuttingDown = true;
+ o?.Stop();
+ o?.Dispose();
+ mp3?.Close();
+ mp3?.Dispose();
+ str?.Close();
+ str?.Dispose();
+ };
+ while (shuttingDown == false)
+ {
+ if (Engine.SaveSystem.CurrentSave != null)
+ {
+ if (Engine.SaveSystem.CurrentSave.MusicEnabled)
+ {
+ str = new MemoryStream(GetRandomSong());
+ mp3 = new NAudio.Wave.Mp3FileReader(str);
+ o = new NAudio.Wave.WaveOut();
+ o.Init(mp3);
+ bool c = false;
+ o.Play();
+ o.PlaybackStopped += (s, a) =>
+ {
+ c = true;
+ };
+
+ while (!c)
+ {
+ if (Engine.SaveSystem.CurrentSave.MusicEnabled)
+ {
+ try
+ {
+ o.Volume = (float)Engine.SaveSystem.CurrentSave.MusicVolume / 100;
+ }
+ catch { }
+ }
+ else
+ {
+ o.Stop();
+ c = true;
+ }
+ Thread.Sleep(10);
+ }
+ }
+ else
+ {
+ Thread.Sleep(10);
+ }
+ }
+ else
+ {
+ Thread.Sleep(10);
+ }
+ }
+ });
+ athread.IsBackground = true;
+ athread.Start();
+ }
}
}