From 76b54853ba726179f9fddb30c6f838991b7aa71a Mon Sep 17 00:00:00 2001 From: Michael VanOverbeek Date: Sun, 21 May 2017 12:29:53 +0000 Subject: Merge a fuckton of shit. --- ShiftOS_TheReturn/AudioManager.cs | 134 -------------------------------------- 1 file changed, 134 deletions(-) delete mode 100644 ShiftOS_TheReturn/AudioManager.cs (limited to 'ShiftOS_TheReturn/AudioManager.cs') diff --git a/ShiftOS_TheReturn/AudioManager.cs b/ShiftOS_TheReturn/AudioManager.cs deleted file mode 100644 index a636497..0000000 --- a/ShiftOS_TheReturn/AudioManager.cs +++ /dev/null @@ -1,134 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#define NOSOUND - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using NAudio; -using NAudio.Wave; - -namespace ShiftOS.Engine -{ - public static class AudioManager - { - private static WaveOut _out = null; - private static AudioFileReader _reader = null; - private static IAudioProvider _provider = null; - - /// - /// Stops the current sound if one is playing and disposes of the sound. - /// - public static void Stop() - { - _out?.Stop(); - _reader?.Dispose(); - _out?.Dispose(); - } - - /// - /// Initiates this engine module using an as a backend for selecting background soundtrack as well as the volume level for the sound. - /// - /// A background soundtrack and volume provider. - /// Thrown if is null. - public static void Init(IAudioProvider _p) - { - if (_p == null) - throw new ArgumentNullException("_p"); - _provider = _p; - } - - /// - /// Sets the volume of the audio system. - /// - /// The volume to use, from 0 to 1. - public static void SetVolume(float volume) - { - _provider.Volume = volume; //persist between songs - _out.Volume = volume; - } - - /// - /// Plays a specified sound file. - /// - /// The file to play. - public static void Play(string file) - { - try - { - _reader = new AudioFileReader(file); - _out = new WaveOut(); - _out.Init(_reader); - _out.Volume = _provider.Volume; - _out.Play(); - _out.PlaybackStopped += (o, a) => { PlayCompleted?.Invoke(); }; - } - catch { } - } - - /// - /// Writes the data in the specified to a file, and plays it as a sound file. - /// - /// The stream to read from. - public static void PlayStream(Stream str) - { - 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 static event Action PlayCompleted; - } - - public interface IAudioProvider - { - /// - /// Gets a byte[] array corresponding to an MP3 track given an index. - /// - /// A track index to use when finding the right track. - /// The MP3 byte[] array. - byte[] GetTrack(int index); - - /// - /// Gets the 1-based count of all available tracks. - /// - int Count { get; } - - /// - /// Gets or sets the track player's volume. - /// - float Volume { get; set; } - } -} -- cgit v1.2.3