﻿using System;
using UnityEngine;
using UnityEngine.Audio;

namespace JLGames.RocketDriver.Actions.Audio
{
    [Serializable]
    public class AudioSettingsSys
    {
        [Header("Music Settings 音乐设置")] 
        [Tooltip("Fade in and out time\n淡入淡出时间")] [SerializeField]
        private float m_MusicFadeTime = 1.0f;
        [Tooltip("Loop\n循环播放")] [SerializeField]
        private bool m_MusicLoop = true;

        [Header("音效设置")] 
        [Tooltip("同一音效最大播放量")] [SerializeField]
        private int m_MaxSameSound = 8;
        [Tooltip("The maximum amount of sound effects\n音效最大播放量")] [SerializeField]
        private int m_MaxSoundCount = 16;
        [Tooltip("Whether to allow pause\n是否允许暂停")] [SerializeField]
        private bool m_SoundPausable = false;

        [Header("Cache settings 缓存设置")] 
        [Tooltip("Maximum number of music caches\n最大音乐缓存数量(<1 disable)")] [SerializeField]
        private int m_MusicCacheSize = 0;
        [Tooltip("Maximum number of sound effects buffers\n最大音效缓存数量(<1 disable)")] [SerializeField]
        private int m_SoundCacheSize = 20;

        [Header("Mixer Settings 混合设置")] 
        [SerializeField] private AudioMixerGroup m_MusicAudioMixerGroup;
        [SerializeField] private AudioMixerGroup m_SoundAudioMixerGroup;

        public float MusicFadeTime => m_MusicFadeTime;
        public bool MusicLoop => m_MusicLoop;

        public int MaxSameSound => m_MaxSameSound;
        public int MaxSoundCount => m_MaxSoundCount;
        public bool SoundPausable => m_SoundPausable;

        public int MusicCacheSize => m_MusicCacheSize;
        public bool MusicCacheOpend => m_MusicCacheSize > 1;

        public int SoundCacheSize => m_SoundCacheSize;
        public bool SoundCacheOpend => m_SoundCacheSize > 1;

        public AudioMixerGroup MusicAudioMixerGroup => m_MusicAudioMixerGroup;
        public AudioMixerGroup SoundAudioMixerGroup => m_SoundAudioMixerGroup;
    }
}