2021-04-10 14:08:20 +02:00
|
|
|
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
|
|
|
|
|
{
|
2021-04-11 17:09:57 +02:00
|
|
|
private List<ISoundEffect> _SoundList { get; set; }
|
2021-04-10 14:08:20 +02:00
|
|
|
private string _Path;
|
|
|
|
|
private Synthy _Engine;
|
|
|
|
|
private Random rnd;
|
|
|
|
|
private int _Min;
|
|
|
|
|
private int _Max;
|
2021-04-11 17:09:57 +02:00
|
|
|
private bool IsPanning = false;
|
|
|
|
|
public AudioAsset(Synthy engine, string path, int min, int max, bool panning = false)
|
2021-04-10 14:08:20 +02:00
|
|
|
{
|
2021-04-11 17:09:57 +02:00
|
|
|
IsPanning = panning;
|
|
|
|
|
_SoundList = new List<ISoundEffect>();
|
2021-04-10 14:08:20 +02:00
|
|
|
_Engine = engine;
|
|
|
|
|
_Path = path;
|
|
|
|
|
_Max = max;
|
|
|
|
|
_Min = min;
|
|
|
|
|
rnd = new Random();
|
|
|
|
|
LoadAssets();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LoadAssets()
|
|
|
|
|
{
|
|
|
|
|
for (var i = _Min; i <= _Max; i++)
|
|
|
|
|
{
|
2021-04-11 17:09:57 +02:00
|
|
|
_SoundList.Add(_Engine.Load(_Path + "/" + i.ToString() + ".wav", IsPanning));
|
2021-04-10 14:08:20 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-04-19 21:33:56 +02:00
|
|
|
|
|
|
|
|
public void Destroy()
|
|
|
|
|
{
|
|
|
|
|
Dispose();
|
|
|
|
|
}
|
2021-04-10 14:08:20 +02:00
|
|
|
}
|
|
|
|
|
}
|