Files
2021-04-19 21:33:56 +02:00

76 lines
1.8 KiB
C#

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<ISoundEffect> _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<ISoundEffect>();
_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();
}
}
public void Destroy()
{
Dispose();
}
}
}