diff options
| author | Michael <[email protected]> | 2017-04-15 14:39:24 -0400 |
|---|---|---|
| committer | Michael <[email protected]> | 2017-04-15 14:39:24 -0400 |
| commit | 51050a02d4d5eff361cfa697eeba777ddafa085a (patch) | |
| tree | 46fd8d57f8aa8a1c8a2eb264b7dd506f876c1c72 | |
| parent | 761202b4908d28f6aba852a3a59eb1dca50957d1 (diff) | |
| download | shiftos_thereturn-51050a02d4d5eff361cfa697eeba777ddafa085a.tar.gz shiftos_thereturn-51050a02d4d5eff361cfa697eeba777ddafa085a.tar.bz2 shiftos_thereturn-51050a02d4d5eff361cfa697eeba777ddafa085a.zip | |
Use NAudio to handle system sounds
| -rw-r--r-- | ShiftOS.WinForms/Applications/Dialog.cs | 14 | ||||
| -rw-r--r-- | ShiftOS.WinForms/Applications/Shifter.Designer.cs | 10 | ||||
| -rw-r--r-- | ShiftOS_TheReturn/AudioManager.cs | 62 |
3 files changed, 40 insertions, 46 deletions
diff --git a/ShiftOS.WinForms/Applications/Dialog.cs b/ShiftOS.WinForms/Applications/Dialog.cs index 10737a1..171bdc4 100644 --- a/ShiftOS.WinForms/Applications/Dialog.cs +++ b/ShiftOS.WinForms/Applications/Dialog.cs @@ -27,6 +27,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.IO; using System.Linq; using System.Media; using System.Text; @@ -44,15 +45,22 @@ namespace ShiftOS.WinForms.Applications public Dialog() { InitializeComponent(); - } + } public string Title { get; private set; } public void OnLoad() { AppearanceManager.SetWindowTitle(this, this.Title); - //NOT EVEn THIS WORKS - new Computer().Audio.Play(Properties.Resources.infobox, Microsoft.VisualBasic.AudioPlayMode.Background); + var str = Properties.Resources.infobox; + var bytes = new byte[str.Length]; + str.Read(bytes, 0, bytes.Length); + ShiftOS.Engine.AudioManager.Stop(); + if (File.Exists("snd.wav")) + File.Delete("snd.wav"); + File.WriteAllBytes("snd.wav", bytes); + + ShiftOS.Engine.AudioManager.Play("snd.wav"); } public void OnSkinLoad() diff --git a/ShiftOS.WinForms/Applications/Shifter.Designer.cs b/ShiftOS.WinForms/Applications/Shifter.Designer.cs index 593f43d..7ef20bf 100644 --- a/ShiftOS.WinForms/Applications/Shifter.Designer.cs +++ b/ShiftOS.WinForms/Applications/Shifter.Designer.cs @@ -37,11 +37,15 @@ namespace ShiftOS.WinForms.Applications /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { - if (disposing && (components != null)) + try { - components.Dispose(); + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); } - base.Dispose(disposing); + catch { } } #region Windows Form Designer generated code diff --git a/ShiftOS_TheReturn/AudioManager.cs b/ShiftOS_TheReturn/AudioManager.cs index 7466eeb..54ee1f1 100644 --- a/ShiftOS_TheReturn/AudioManager.cs +++ b/ShiftOS_TheReturn/AudioManager.cs @@ -42,58 +42,40 @@ namespace ShiftOS.Engine private static IAudioProvider _provider = null; private static bool _running = true; + public static void Stop() + { + _out?.Stop(); + _reader?.Dispose(); + _out?.Dispose(); + } + public static void Init(IAudioProvider _p) { -#if !NOSOUND _provider = _p; - AppearanceManager.OnExit += () => - { - _running = false; - _out?.Stop(); - _reader?.Dispose(); - _out?.Dispose(); - System.IO.File.Delete("temp.mp3"); - }; - var t = new Thread(() => - { - SaveSystem.GameReady += () => - { - while(_out == null) - { + } - } - _out.Volume = _provider.Volume; - }; - Random rnd = new Random(); - while(_running == true) + public static void SetVolume(float volume) + { + _provider.Volume = volume; //persist between songs + _out.Volume = volume; + } + + public static void Play(string file) + { + new Thread(() => + { + try { - int track = rnd.Next(0, _provider.Count); - byte[] mp3 = _provider.GetTrack(track); - System.IO.File.WriteAllBytes("temp.mp3", mp3); - _reader = new AudioFileReader("temp.mp3"); + _reader = new AudioFileReader(file); _out = new WaveOut(); _out.Init(_reader); _out.Volume = _provider.Volume; - _out.Play(); - while(_out.PlaybackState == PlaybackState.Playing) - { - Thread.Sleep(5000); //even when the player isn't playing, this will give a good delay between songs. - } - _reader.Dispose(); - _out.Dispose(); } - }); - t.IsBackground = true; - t.Start(); -#endif + catch { } + }).Start(); } - public static void SetVolume(float volume) - { - _provider.Volume = volume; //persist between songs - _out.Volume = volume; - } internal static void Kill() { |
