﻿using NodeCanvas.Framework;
using ParadoxNotion.Design;
using DarkTonic.MasterAudio;

namespace NodeCanvas.Tasks.MasterAudioIntegration{

	[Category("MasterAudio/Playlist")]
	[Icon("MasterAudio")]
	public class FadePlaylist : ActionTask {

		public bool allPlaylists = false;
		public BBParameter<PlaylistController> playlistController;
		[SliderField(0,1)]
		public BBParameter<float> volume = 1;
		[SliderField(0,1)]
		public BBParameter<float> fadeTime = 0.2f;

		protected override string info{
			get {return string.Format("Fade Playlist {0} to {1}", allPlaylists? "All" : playlistController.ToString(), volume);}
		}

		protected override string OnInit(){
			if (!allPlaylists && playlistController.isNull)
				return "Either check all AllPlaylists or specify a playlistController";
			return null;
		}

		protected override void OnExecute(){

			if (allPlaylists){
				foreach(var pl in PlaylistController.Instances){
					MasterAudio.FadePlaylistToVolume(pl.name, volume.value, fadeTime.value);
				}
			} else {
				MasterAudio.FadePlaylistToVolume(playlistController.value.name, volume.value, fadeTime.value);
			}
		}

		protected override void OnUpdate(){
			if (elapsedTime >= fadeTime.value)
				EndAction();
		}
	}
}