﻿using System;
using UnityEngine;

namespace JLGames.RocketDriver.Actions.Audio
{
    [Serializable]
    [CreateAssetMenu(fileName = "AudioSettings", menuName = "RocketDriver/Audio Settings", order = 1)]
    public class AudioSettings : ScriptableObject
    {
        /// <summary>
        /// System-level presets, not open to users
        /// 系统级别预设置，对用户不开放
        /// </summary>
        [SerializeField] [Tooltip("System-level presets, not open to users\n系统级别预设置，对用户不开放")]
        private AudioSettingsSys m_SysSettings;

        /// <summary>
        /// User level settings, user can change
        /// 用户级别设置，用户可更改
        /// </summary>
        [SerializeField] [Tooltip("\n用户级别设置，用户可更改")]
        private AudioSettingsUser m_UserSettings;

        //预加载
//        [SerializeField] [Tooltip("预加载")] private AudioPreloadedInfo[] m_Preloads = new AudioPreloadedInfo[] { };

        private AudioPreloadedInfo[] m_SortedPreloads;

        public AudioSettingsSys SysSettings => m_SysSettings;
        public AudioSettingsUser UserSettings => m_UserSettings;

//        public AudioPreloadedInfo[] Preloads
//        {
//            get
//            {
//                if (null == m_SortedPreloads)
//                {
//                    m_SortedPreloads = (AudioPreloadedInfo[]) m_Preloads.Clone();
//                    Array.Sort(m_SortedPreloads,
//                        (o1, o2) => o1.Level != o2.Level
//                            ? o1.Level.CompareTo(o2.Level)
//                            : String.Compare(o1.Named, o2.Named, StringComparison.Ordinal));
//                }
//
//                return m_SortedPreloads;
//            }
//        }

        public void SetUserSettings(AudioSettingsUser userSettings)
        {
            m_UserSettings = userSettings;
        }
    }
}