using System; using System.Collections.Generic; using System.Text; using XVector3 = Microsoft.Xna.Framework.Vector3; using System.Numerics; using SynthySound; namespace EvilSatellites { public class AudioAsset { private List _SoundList { get; set; } private string _Path; private Synthy _Engine; private Random rnd; private int _Min; private int _Max; private bool IsPanning = false; public AudioAsset(Synthy engine, string path, int min, int max, bool panning = false) { IsPanning = panning; _SoundList = new List(); _Engine = engine; _Path = path; _Max = max; _Min = min; rnd = new Random(); LoadAssets(); } private void LoadAssets() { for (var i = _Min; i <= _Max; i++) { _SoundList.Add(_Engine.Load(_Path + "/" + i.ToString() + ".wav", IsPanning)); } } public void Play() { var index = rnd.Next(_SoundList.Count); _SoundList[index].Reset(); _SoundList[index].Play(); } public void AddEffect(IEffect effect) { foreach (var sound in _SoundList) { sound.ConnectToEffect(effect); } } public void RemoveEffect(IEffect effect) { foreach (var sound in _SoundList) { sound.DisconnectFromEffect(effect); } } public void Dispose() { foreach (var sound in _SoundList) { sound.Destroy(); } } } }