using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.Audio;
using System.ComponentModel;
using UnityEngine.Bindings;
using UnityEngine.Internal;

[System.Serializable]
public class AudioCue
{
    [Tooltip("Assigns a permanent AudioSource for cues that will be played on a regular basis")] public bool _IsRecurrent;
    [Tooltip("How to handle if there are multiple audio clips in the array")] public AudioArrayBehaviour _ArrayBehaviour;
    public AudioClip[] _Clips;
    [Space(5)]

    public AudioMixerGroup _Output;
    public bool _Loop;
    [Range(0f, 1f)] public float _Volume = 1f;
    [Range(-3f, 3f)] public float _Pitch = 1f;
    [Range(0f, 1f)] public float _SpatialBlend = 0f;
    public AudioSourceProperties _AudioSourceProperties;

    [HideInInspector] public AudioSource _recurrentSource;
}


public enum AudioArrayBehaviour
{
    SelectRandom,
    PlayInOrder
}

[System.Serializable]
public class AudioSourceProperties
{

    public bool _BypassEffects;
    public bool _BypassListenerEffects;
    public bool _BypassReverbZones;


    [Space(3)]
    [Range(0, 256)] public int _Priority = 128;
    [Range(-1f, 1f)] public float _StereoPan = 0f;
    [Range(0f, 1.1f)] public float _ReverbZoneMix = 1f;

    [Range(0f, 5f)] public float _DopplerLevel = 1f;
    [Range(0, 360)] public float _Spread = 0f;
    public AudioRolloffMode _VolumeRolloff;
    public float _MinDistance = 1f;
    public float _MaxDistance = 500f;
}