using Sandbox;
using System.Collections.Generic;
using VeloX.Audio;

namespace VeloX;

[AssetType( Name = "Engine Stream", Extension = "engstr", Category = "VeloX" )]
[Icon( "time_to_leave" )]
public sealed class EngineStream : GameResource
{
	public sealed class Layer
	{
		[Property,
		 Title( "Sound File" ),
		 Description( "Sound asset for this layer" )]
		public SoundFile AudioPath { get; set; }

		[Property, Title( "Use Redline Effect" ),
		 Description( "Enable RPM-based vibration effect" )]
		public bool UseRedline { get; set; } = true;

		[Property, Title( "Controllers" ),
		 Description( "Audio parameter controllers" )]
		public List<Controller> Controllers { get; set; }
		[Property, Title( "Is Muted" )]
		public bool IsMuted { get; set; }
	}

	[Property, Title( "Stream Parameters" ),
	 Description( "Global engine sound parameters" )]
	public StreamParameters Parameters { get; set; }

	[Property, Title( "Sound Layers" ),
	 Description( "Individual sound layers" )]
	public Dictionary<string, Layer> Layers { get; set; }
}
