using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System.Text;

public class ButtonPanel : MonoBehaviour
{
    public GameObject SettingPanel;
    public Button RestoreDefaults;
    public Button SaveAndClose;
    public Text Showtext;

    public Slider BGMSlider;
    public Slider SESlider;
    public Toggle MuteToggle;
    public Transform FramePanel;
    public Transform ShowPanel;
    private System_Setting sys = new System_Setting();
    string path;
    // Use this for initialization

    void Start()
    {
        path = Application.dataPath + "/System.json";
        RestoreDefaults.onClick.AddListener(ResetClick);
        SaveAndClose.onClick.AddListener(SaveClick);
        MuteToggle.onValueChanged.AddListener(MuteChange);
        setValue();
    }


    /// <summary>
    /// 静音按钮
    /// </summary>
    /// <param name="arg0"></param>
    private void MuteChange(bool arg0)
    {
        SESlider.interactable = !arg0;
        BGMSlider.interactable = !arg0;
    }

    /// <summary>
    /// 保存并退出
    /// </summary>
    private void SaveClick()
    {
        sys.resolutionX = ShowPanel.GetComponent<ShowPanel>().ResolutionX;
        sys.resolutionY = ShowPanel.GetComponent<ShowPanel>().ResolutionY;
        sys.isFullScreen = ShowPanel.GetComponent<ShowPanel>().IsFullScreen;
        sys.bgmValue = BGMSlider.value;
        sys.seValue = SESlider.value;
        sys.isMuto = MuteToggle.isOn;
        for (int i = 0; i < FramePanel.childCount; i++)
        {
            if (FramePanel.GetChild(i).GetComponent<Toggle>().isOn)
            {
                string str = FramePanel.GetChild(i).GetComponentInChildren<Text>().text;
                switch (str)
                {
                    case "中配置":
                        if ("中配置" == str)
                        {
                            sys.frameSelect = Frame.中配置;
                        }
                        break;
                    case "高配置":
                        if ("高配置" == str)
                        {
                            sys.frameSelect = Frame.高配置;
                        }
                        break;
                    case "低配置":
                        if ("低配置" == str)
                        {
                            sys.frameSelect = Frame.低配置;
                        }
                        break;
                    case "完美画质":
                        if ("完美画质" == str)
                        {
                            sys.frameSelect = Frame.完美画质;
                        }
                        break;

                    default:
                        break;
                }
            }
        }
        //设置画质与分辨率
        StartCoroutine(ClosePanel(sys));
        //转为Json文件保存
       
        //设置声音
        SystemSettig.IsMute = MuteToggle.isOn;
        SystemSettig.BgmValue = BGMSlider.value;
        SystemSettig.SEValue = SESlider.value;
        SystemSettig.SoundSetFunction();
    }
    /// <summary>
    /// 恢复默认设置
    /// </summary>
    private void ResetClick()
    {
        sys.resolutionX = SystemSettig.DefultResolutionX;
        sys.resolutionY = SystemSettig.DefultResolutionY;
        sys.isFullScreen = SystemSettig.DefulteIsFullScreen;
        sys.bgmValue = SystemSettig.DefultBgmValue;
        sys.seValue = SystemSettig.DefultSEValue;
        sys.isMuto = SystemSettig.DefultIsMute;
        sys.frameSelect = SystemSettig.DefultFrameSelect;
        StartCoroutine(ClosePanel(sys));
        SystemSettig.DefultSoundSetFunction();
    }
    IEnumerator ClosePanel(System_Setting sys)
    {
        if (sys==null)
        {
            sys = SystemSettig.instance.DefuletSetting();
        }
        yield return new WaitForSeconds(0.5f);
        Showtext.gameObject.SetActive(true);
        SystemSettig.instance.SaveToJson(sys);
        Showtext.text = SystemSettig.Hinttext;
        yield return new WaitForSeconds(1f);
        Showtext.gameObject.SetActive(false);
        SystemSettig.ShowAndFrameSetfunction(sys);
        
    }
    void setValue()
    {
        ShowPanel.Find("AllScreenToggle").GetComponent<Toggle>().isOn = SystemSettig.IsFullScreen;
        Dropdown dp = ShowPanel.Find("Dropdown").GetComponent<Dropdown>();
        List<Dropdown.OptionData> all = dp.options;
        for (int i = 0; i < all.Count; i++)
        {
            if (all[i].text == ((SystemSettig.ResolutionX).ToString() + "*" + (SystemSettig.ResolutionY).ToString()))
            {
                dp.captionText.text = all[i].text;
            }
        }
        BGMSlider.value = SystemSettig.BgmValue;
        SESlider.value = SystemSettig.SEValue;
        MuteToggle.isOn = SystemSettig.IsMute;
        int select = (int)Enum.Parse(typeof(Frame), SystemSettig.FrameSelect.ToString());
        for (int i = 0; i < FramePanel.childCount; i++)
        {
            if (i == select)
            {
                FramePanel.GetChild(i).GetComponent<Toggle>().isOn = true;
            }
            else
            {
                FramePanel.GetChild(i).GetComponent<Toggle>().isOn = false;
            }
        }
    }


}