using System;
using System.Collections.Generic;
using DG.Tweening;
using FairyGUI;
using FGUI.Common_01;
using Spine.Unity;
using UnityEngine;
using Random = UnityEngine.Random;

namespace ChillConnect
{
    public class BroadcastUI : BaseUI
    {
        private BroadcastUICtrl ctrl;
        private BroadcastModel model;
        private com_broadcast1 ui;

        public BroadcastUI(BroadcastUICtrl ctrl) : base(ctrl)
        {
            uiName = UIConst.BroadcastUI;
            this.ctrl = ctrl;
        }

        protected override void SetUIInfo(UIInfo uiInfo)
        {
            uiInfo.packageName = "Common_01";
            uiInfo.assetName = "com_broadcast1";
            uiInfo.layerType = UILayerType.Top;
            uiInfo.isNeedOpenAnim = false;
            uiInfo.isNeedCloseAnim = false;
            uiInfo.isNeedUIMask = false;
        }

        #region 生命周期
        protected override void OnInit()
        {

        }

        protected override void OnClose()
        {
        }

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

        protected override void OnOpenBefore(object args)
        {

            ui.x = (GRoot.inst.width - 1080) / 2;
            InitView();
            //ui.y = 241;

            if (UIManager.Instance.IsExistUI(UIConst.RainPlayUI))
            {

                Settop();
            }

            else
            {
                Setbuttom();
            }
            // ui.visible = false;
            // if (Screen.safeArea.y != 0)
            // {//刘海屏
            //     ui.y += Screen.safeArea.y;
            // }
            text_ui = ui.broad_cast_text;

            ui.btn_record.SetClick(OpenRecord);
            ui.broad_cast_text.btn_broad.SetClick(OpenRecord);

            if (ConfigSystem.GetConfig<exBrPoolModel>() == null) return;
            config_name_list = ConfigSystem.GetConfig<exBrPoolModel>().config_name_list;
            config_money_list = ConfigSystem.GetConfig<exBrPoolModel>().config_money_list;
            GameDispatcher.Instance.AddListener(GameMsg.hideBroadCast, hideEvent);
            GameDispatcher.Instance.AddListener(GameMsg.showBroadCast, showEvent);
            UICtrlDispatcher.Instance.AddListener(UICtrlMsg.MainUI_Open, Setbuttom);
            UICtrlDispatcher.Instance.AddListener(UICtrlMsg.RainPlayUI_Open, Settop);
        }

        protected override void OnOpen(object args)
        {
        }

        protected override void OnHide()
        {
        }

        protected override void OnDisplay(object args)
        {
        }
        #endregion

        #region 消息
        protected override void AddListener()
        {

        }
        protected override void RemoveListener()
        {

        }
        #endregion
        private int time_count = 11;
        private com_broadcast_text1 text_ui;
        private List<string> config_name_list;
        private List<string> config_money_list;
        private bool main_ui_show = true;
        //初始化页面逻辑

        private Action closeCallback;
        private void InitView()
        {
            HallManager.Instance.UpdateSecondEvent += timeEvent;


            var sk = FXManager.Instance.SetFx<SkeletonAnimation>(ui.broad_cast_text.bg_panel, Fx_Type.fx_broad, ref closeCallback);
            sk.state.SetAnimation(0, "animation", true);
        }

        private void OpenRecord()
        {
            UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.RecordViewUI_Open);
        }
        private void hideEvent(object sender = null)
        {
            Debug.Log("hide");
            main_ui_show = false;
            ui.visible = false;
        }
        private void showEvent(object sender = null)
        {
            Debug.Log("show");
            main_ui_show = true;
            ui.visible = true;
        }
        private void Settop(object sender = null)
        {
            ui.group_.y = 340;
            if (Screen.safeArea.y != 0)
            {//刘海屏
                ui.group_.y += 68;
            }
        }
        private void Setbuttom(object sender = null)
        {
            ui.group_.y = 184;
            if (Screen.safeArea.y != 0)
            {//刘海屏
                ui.group_.y += 68;
            }
        }
        void timeEvent()
        {
            time_count++;
            // if (time_count > 30)
            // {
            //     time_count = 0;
            //     var name_index = UnityEngine.Random.Range(0, config_name_list.Count);
            //     var money_index = UnityEngine.Random.Range(0, config_money_list.Count);
            //     if (main_ui_show)
            //     {
            //         ui.visible = true;
            //     }
            //     Debug.Log(text_ui.cast_text.text);
            //     text_ui.cast_text.text = String.Format(text_ui.hide_text.text, config_name_list[name_index],
            //         config_money_list[money_index], DateTimeManager.Instance.GetCurrDateTime());
            //     text_ui.cast_text.x = 686;
            //     Tweener tweener = DOTween.To(() => text_ui.cast_text.x,
            //            x => text_ui.cast_text.x = x, -1300, 10);

            // }

            // time_count = 0;


            //Debug.Log($"barry  broad time count======== {time_count}");
            if (time_count > 20)
            {
                time_count = 0;
                var name_index = Random.Range(0, config_name_list.Count);
                var money_index = Random.Range(0, config_money_list.Count);
                Debug.Log(text_ui.cast_text.text);

                string name = config_name_list[name_index];
                if (name.Length > 4)
                {
                    name = name[..4] + "...";
                }
               // text_ui.hide_text.text = GameHelper.getDesByKey("makeup_4");
                string broad_text = String.Format(GameHelper.getDesByKey("makeup_4"), name, config_money_list[money_index], DateTimeManager.Instance.GetCurrDateTime());
                text_ui.cast_text.text = broad_text;
                ui.t0.Play();

                DOVirtual.DelayedCall(3.5f, () =>
                {
                    // Tweener tweener = DOTween.To(() => ui.broad.x,
                    //     x => ui.broad.x = x, 1080, 0.5f);
                    ui.t1.Play();
                });
                string str = name + "-" + config_money_list[money_index] + "-" + DateTimeManager.Instance.GetCurrDateTime();
                GameDispatcher.Instance.Dispatch(GameMsg.updateRecordList, str);

            }

        }
    }
}
