using System;
using FairyGUI;
using FGUI.Common_01;
using FGUI.Setting_07;
using IgnoreOPS;
// using SGModule.ApplePay;
using UnityEngine;
// using btn_head = FGUI.Common_01.btn_head;
// using FGUI.G006_menu;

namespace ChillConnect
{
    public class MenuUI : BaseUI
    {
        private MenuUICtrl ctrl;
        private MenuModel model;
        private com_setting ui;
        private int selectIndex = -1;

        private int total_item;

        public MenuUI(MenuUICtrl ctrl) : base(ctrl)
        {
            uiName = UIConst.MenuUI;
            this.ctrl = ctrl;
        }

        protected override void SetUIInfo(UIInfo uiInfo)
        {
            uiInfo.packageName = "Setting_07";
            uiInfo.assetName = "com_setting";
            uiInfo.layerType = UILayerType.Popup;
            uiInfo.isNeedOpenAnim = false;
            uiInfo.isNeedCloseAnim = false;
            uiInfo.isNeedUIMask = true;
        }

        #region 生命周期

        protected override void OnInit()
        {
            model = moduleManager.GetModel(ModelConst.MenuModel) as MenuModel;
        }

        protected override void OnClose()
        {
            CommonHelper.FadeOut(ui);

        }

        protected override void OnBind()
        {
            ui = baseUI as com_setting;
        }

        protected override void OnOpenBefore(object args)
        {


            total_item = 8;
            selectIndex = DataMgr.PlayerAvatarId.Value;

            InitView();
            UpdataAvatar();

        }

        protected override void OnOpen(object args)
        {
            CommonHelper.FadeIn(ui);

            // if (args != null)
            // {
            //     ui.menu.selectedIndex = (bool)args ? com_setting.Menu_settings : com_setting.Menu_person;

            // }
        }

        protected override void OnHide()
        {
        }

        protected override void OnDisplay(object args)
        {
        }

        #endregion

        #region 消息

        protected override void AddListener()
        {
            HallManager.Instance.AddChangeGiftSwitch(InitView);
            PreferencesDispatcher<int>.Instance.AddListener(DataMsg.playerAvatarId, UpdataAvatar);
        }

        protected override void RemoveListener()
        {
            HallManager.Instance.RemoveChangeGiftSwitch(InitView);
            PreferencesDispatcher<int>.Instance.RemoveListener(DataMsg.playerAvatarId, UpdataAvatar);

        }

        #endregion
        private int _selectIndex = 0;
        private const int TotalItem = 8;
        private void UpdataAvatar(object obj = null)
        {
            // var head = ui.btn_head.head as btn_head;

            //  GameHelper.SetSelfAvatar(head.load_avatar);
        }
        private void UpdateItem(int index, GObject items)
        {
            Debug.Log($"updateItem============index =={index}");
            var currentIndex = index + 1;
            var head = items as btn_item_head;
            var imgHead = head.head as btn_head;

            TextureHelper.SetAvatarToLoader(currentIndex, imgHead.load_avatar);
            head.head_select.selectedIndex = _selectIndex == currentIndex
                ? btn_item_head.Head_select_select
                : btn_item_head.Head_select_none;

            head.SetClick(() =>
            {
                _selectIndex = currentIndex;
                ui.list.numItems = TotalItem;

                SetHeadPic();
                PreferencesDispatcher<int>.Instance.Dispatch(DataMsg.playerAvatarId);
            });
        }
        private void SetAvatar()
        {
            if (_selectIndex != -1 && _selectIndex != DataMgr.PlayerAvatarId.Value)
            {
                DataMgr.PlayerAvatarId.Value = _selectIndex;
            }
        }

        private void SetHeadPic()
        {
            SetAvatar();

            // var head = ui.head as btn_head;
            // if (head == null) return;
            //  TextureHelper.SetAvatarToLoader(_selectIndex, head.load_avatar);
        }
        private void InitView()
        {
            _selectIndex= DataMgr.PlayerAvatarId.Value;
            ui.list.itemRenderer = UpdateItem;
            ui.list.numItems = TotalItem;
            // var namStr = GameHelper.GetUserName();
            // ui.edit_name.input.text = namStr;
            // ui.edit_name.btn_amend.SetClick(SaveName);

            // ui.btn_back.SetClick(OnCloseView);
            // ui.btn_music.SetClick(OnClickSetMusic);
            // ui.btn_sound.SetClick(OnClickSoundBtn);

            // ui.btn_privacy.menus.selectedIndex = btn_menu.Menus_privacy;
            // ui.btn_terms.menus.selectedIndex = btn_menu.Menus_terms;
            // ui.btn_official.menus.selectedIndex = btn_menu.Menus_official;
            // ui.btn_credits.menus.selectedIndex = btn_menu.Menus_credits;
            // ui.btn_privacy.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PrivacyUI_Open, 0); });
            // ui.btn_terms.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PrivacyUI_Open, 1); });
            // ui.btn_official.SetClick(() => { OpenBrowser.OpenURL("https://www.chillconnect.fun"); });
            // ui.btn_email.SetClick(() => {
            //     //OpenBrowser.OpenEmailClient(ConfigSystem.GetConfig<CommonModel>().contactUs, "Please select an email application");
            //     GameHelper.OpenEmail();
            // });
            // ui.btn_exit.SetClick(OnCloseView);

            // ui.btn_credits.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PrivacyUI_Open, 2); });
            // SetUID();
            // SetVersion();
            // RefreshMusicUI();

            // // 初始化滑动条位置
            // ui.sound_slider.min = 0f;
            // ui.sound_slider.max = 1f;

            // // 添加滑动条变化事件监听
            // ui.sound_slider.onChanged.Add(() =>
            // {
            //     var sound = (float)Math.Round(ui.sound_slider.value, 2);
            //     Debug.Log("sound 滑动条当前的值=== " + sound);

            //     GRoot.inst.soundVolume = sound;
            //     PlayerPrefs.SetFloat("soundVolume", sound);
            // });

            // ui.music_slider.min = 0f;
            // ui.music_slider.max = 1f;
            // ui.music_slider.onChanged.Add(() =>
            // {
            //     var sound = (float)Math.Round(ui.music_slider.value, 2);
            //     Debug.Log("music 滑动条当前的值=== " + sound);
            //     PlayerPrefs.SetFloat("musicSound", sound);
            //     AudioManager.Instance.SetBGMSound();

            // });

            // ui.btn_head.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PersonViewUI_Open); });

            // if (GameHelper.IsGiftSwitch()) {
            //     ui.btn_restore.visible = false;
            // }
            // ui.btn_restore.SetClick(() =>
            // {
            //     // ApplePayManager.Instance.AppleRestore((success,message)=>{
            //     //     Debug.Log("[barry] restore success message: " + message);
            //     //     if (success)
            //     //     {
            //     //         Debug.Log("[barry] restore success: " + success);
            //     //         GameHelper.ShowTips("Restore Purchases Success!");
            //     //         // SaveData.GetSaveObject().is_get_packreward = success;
            //     //         if (!GameHelper.IsGiftSwitch())
            //     //         {
            //     //             SaveData.GetSaveObject().is_get_removead = success;
            //     //         }
            //     //         SaveData.GetSaveObject().have_slot = success;
            //     //         GameDispatcher.Instance.Dispatch(GameMsg.noads_refresh);
            //     //     }
            //     //     else
            //     //     {
            //     //         // Debug.Log("[barry] restore failed: " + success);
            //     //         GameHelper.ShowTips("There are no recoverable transactions");
            //     //     }
            //     // });
            //     CtrlCloseUI();
            // });
            ui.btn_close.SetClick(CtrlCloseUI);
            ui.btn_select.SetClick(CtrlCloseUI);

        }


        private void SetVersion()
        {
            // Debug.Log($"SetVersion====== {Application.version}");
            // ui.text_version.SetVar("count", Application.version).FlushVars();
        }

        private void SetUID()
        {
            // ui.text_uid.SetVar("UID", GameHelper.GetLoginModel().Uid.ToString()).FlushVars();
        }

        public override void OnSwitchLanguage()
        {
            base.OnSwitchLanguage();

            SetVersion();

            SetUID();
        }

        private void OnCloseView()
        {
            // CloseMenu();
            UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MenuUI_Close, true);
            TimerHelper.mEasy.AddTimer(0.5f, () =>
           {
               CtrlCloseUI();
           });

        }

        private void SaveName()
        {
            // var name = ui.edit_name.input.text;
            // Debug.Log($"SaveName=== {name}");
            // if (string.IsNullOrEmpty(name) || name.IsNullOrWhiteSpace())
            // {
            //     GameHelper.ShowTips("The input cannot be null", true);
            //     return;
            // }

            // // if (name.Equals(GameHelper.GetPlayerInviteCode()))
            // // {
            // //     return;
            // // }

            // if (name.Equals(DataMgr.PlayerName)) return;

            // GameHelper.ShowTips("Name changed successfully");
            // DataMgr.PlayerName.Value = name;
        }

        private void OnClickSetMusic()
        {
            model.IsOpenMusic = !model.IsOpenMusic;
            RefreshMusicUI();
        }

        private void OnClickSoundBtn()
        {
            model.IsOpenEffect = !model.IsOpenEffect;
            RefreshMusicUI();
        }

        private void RefreshMusicUI()
        {
            // ui.btn_music.on_off.selectedIndex =
            //     model.IsOpenMusic ? btn_music_on_off.On_off_on : btn_music_on_off.On_off_off;
            // ui.btn_sound.on_off.selectedIndex =
            //     model.IsOpenEffect ? btn_sound_on_off.On_off_on : btn_sound_on_off.On_off_off;
            // Debug.Log("barry GRoot.inst.soundVolume的值=== " + GRoot.inst.soundVolume);

            // ui.sound_slider.value = GRoot.inst.soundVolume;

            // // Debug.Log("barry music volume的值=== " + PlayerPrefs.GetFloat("musicSound", 1.0f));
            // ui.music_slider.value = PlayerPrefs.GetFloat("musicSound", 1.0f);
        }
    }
}
