// Author: Gockner, Simon // Created: 2021-04-07 // Copyright(c) 2021 SimonG. All Rights Reserved. using System.Collections.Generic; using Lib.Audio.Interfaces; using NAudio.CoreAudioApi; namespace Lib.Audio { public class Controllable : IControllable { private readonly List _audioSessionControls; public Controllable(List audioSessionControls, string executablePath, string name) { _audioSessionControls = audioSessionControls; ExecutablePath = executablePath; Name = name; } public Controllable(string executablePath) { IsValid = false; ExecutablePath = executablePath; Name = ""; _audioSessionControls = new List(); } public bool IsValid { get; set; } = true; public string ExecutablePath { get; } public string Name { get; } public void SetVolume(float volume) => _audioSessionControls.ForEach(c => c.SimpleAudioVolume.Volume = volume); public float GetVolume() => _audioSessionControls[0].SimpleAudioVolume.Volume; //TODO: Can we always take 0? public void Mute() => _audioSessionControls.ForEach(c => c.SimpleAudioVolume.Mute = true); public void UnMute() => _audioSessionControls.ForEach(c => c.SimpleAudioVolume.Mute = false); public override string ToString() => Name; } }