using System;
using System.Collections.Generic;
using FairyGUI;
using FGUI.AddCell_12;
using FGUI.Common_01;
using SGModule.Net;
using SGModule.NetKit;

namespace ChillConnect
{
    public class AddViewoffUI : BaseUI
    {
        private AddViewoffUICtrl ctrl;
        private AddViewoffModel model;
        private com_addView_off ui;

        public AddViewoffUI(AddViewoffUICtrl ctrl) : base(ctrl)
        {
            uiName = UIConst.AddViewoffUI;
            this.ctrl = ctrl;
        }

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

        #region 生命周期
        protected override void OnInit()
        {
            //model = ModuleManager.Instance.GetModel(ModelConst.AddViewoffModel) as AddViewoffModel;
        }

        protected override void OnClose()
        {
            GameHelper.showGameUI = true;
            HallManager.Instance.UpdateSecondEvent -= updateWatchCD;
            if (GameHelper.IsAdModelOfPay())
            {
                AdRedeemManager.Instance.Destroy();
            }

        }

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

        protected override void OnOpenBefore(object args)
        {
            // if (ui.btn_watch is btn_watchAd watchAdBtn)
            // {
            //     CommonTools.GetInstance.InitAdBtnAnim(watchAdBtn.icon_Parent);
            // }


            TrackKit.SendEvent(GameHelper.getTrackEvenName(),Property.BuyOneOffClick);
            if (GameHelper.IsGiftSwitch() && ConfigSystem.GetConfig<CommonModel>().PiggyBankSwitch == 1)
            {
                (ui.btn_max_pay.GetChild("img_saveingpot") as GImage).visible = true;
            }
            // ad_cool_down = ConfigSystem.GetConfig<CommonModel>().exchangeCD;
            // btn_WatchAd = ui.btn_watch as btn_watchAd;
            if (GameHelper.IsAdModelOfPay())
            {
                AdRedeemManager.Instance.SetWatchAd(PurchasingManager.GetPaySku(PayType.buy_one_off), ui.btn_watch as btn_watchAd, SetTextString);
                ui.pay_type.selectedIndex = 0;
                ui.text_old_price.text = GameHelper.GetCommonModel().addspace + "ADs";
                btn_watchAd btn = ui.btn_watch as btn_watchAd;
                btn.buy_type.selectedIndex = 1;



                AdRedeemManager.Instance.Start();
                SetTextString();
            }
            else
            {
                ui.pay_type.selectedIndex = 1;
                ui.text_old_price.text = "$ " + GameHelper.GetCommonModel().addspace2;
                decimal price = (decimal)GameHelper.GetCommonModel().AddDiscount2;
                ui.btn_max_pay.title = GameHelper.getPrice(price);
                ui.btn_max_pay.SetClick(() =>
                {
                    ApplePayClass maxPayData = new ApplePayClass
                    {
                        amount = (int)Math.Round(price * 100),
                        sku = PurchasingManager.GetPaySku(PayType.buy_one_off),
                        currency = "USD"
                    };
                    MaxPayManager.Instance.Buy(maxPayData);
                });
            }
            InitBroadCast();
            InitView();
            if (GameHelper.IsGiftSwitch())
            {
                ui.broad.visible = true;
            }
        }

        protected override void OnOpen(object args)
        {
        }

        protected override void OnHide()
        {
        }

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

        #region 消息
        protected override void AddListener()
        {
            GameDispatcher.Instance.AddListener(GameMsg.apple_pay_success, pay_success);

        }
        protected override void RemoveListener()
        {
            GameDispatcher.Instance.RemoveListener(GameMsg.apple_pay_success, pay_success);

        }
        #endregion
        void pay_success(object str)
        {
            string type = (string)str;

            if (type == PurchasingManager.GetPaySku(PayType.buy_one_off))
            {
                UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.AddViewoffUI_Close);
                SaveData.GetSaveObject().have_slot = true;
                SaveData.saveDataFunc();
                GameDispatcher.Instance.Dispatch(GameMsg.Slot_refresh);
                GameDispatcher.Instance.Dispatch(GameMsg.resurgence_close);
                CtrlCloseUI();
            }


        }

        //初始化页面逻辑
        private void InitView()
        {
            // var tAnimation = FXManager.Instance.SetFx<SkeletonAnimation>(ui.tip_parent, Fx_Type.Fx_AddBoxTip, ref _closeCallback);
            // tAnimation.state.AddAnimation(0, "animation", true, 0);

            ui.btn_close.SetClick(() =>
            {
                GameDispatcher.Instance.Dispatch(GameMsg.resurgence_close);
                CtrlCloseUI();
            });

            HallManager.Instance.UpdateSecondEvent += updateWatchCD;
            broadtime++;
            BroadCast();

        }
        void updateWatchCD()
        {
            ui.text_time.text = CommonHelper.TimeFormat(SaveData.GetSaveObject().addview_off_time - Convert.ToInt32(GameHelper.GetNowTime()), CountDownType.Hour);

        }

        public void SetTextString()
        {
            var need = AdRedeemManager.Instance.GetCeilingNeedAds(PurchasingManager.GetPaySku(PayType.buy_one_off));
            var myAd = AdRedeemManager.Instance.GetLookRewardADNum();

            ui.tips.SetVar("num", need.ToString()).FlushVars();
            ui.ads.SetVar("num", myAd + "/").FlushVars();
            ui.ads.SetVar("num1", need.ToString()).FlushVars();
        }
        private int broadtime = 1;
        private List<string> config_name_list = ConfigSystem.GetConfig<LevelAttemptsModel>().config_name_list;
        private List<string> config_money_list = ConfigSystem.GetConfig<LevelAttemptsModel>().config_money_list;
        private List<string[]> broad_list = new List<string[]>();
        private void BroadCast()
        {
            if (broadtime % 3 == 0)
            {
                (ui.broad as com_broadcast_new).t1.Play(() =>
                {
                    broad_list.RemoveAt(0);
                    int name_index = UnityEngine.Random.Range(0, config_name_list.Count);
                    int money_index = UnityEngine.Random.Range(0, config_money_list.Count);
                    broad_list.Add(new string[2] { config_name_list[name_index], config_money_list[money_index] });
                    for (int i = 0; i < 4; i++)
                    {
                        text_list[i].text = "Congratulations,User [color=#ad4800][size=36]" + broad_list[i][0] + "[/size][/color] !After purchasing the +1 Block Pack,play [color=#ad4800]" + broad_list[i][1] + "[/color] matcher to clear the level!";
                    }
                });


            }

        }
        private List<GTextField> text_list = new List<GTextField>();
        private void InitBroadCast()
        {
            text_list.Add((ui.broad as com_broadcast_new).text_0);
            text_list.Add((ui.broad as com_broadcast_new).text_1);
            text_list.Add((ui.broad as com_broadcast_new).text_2);
            text_list.Add((ui.broad as com_broadcast_new).text_3);
            for (int i = 0; i < 4; i++)
            {

                int name_index = UnityEngine.Random.Range(0, config_name_list.Count);
                int money_index = UnityEngine.Random.Range(0, config_money_list.Count);
                broad_list.Add(new string[2] { config_name_list[name_index], config_money_list[money_index] });
                text_list[i].text = "Congratulations,User [color=#ad4800][size=36]" + broad_list[i][0] + "[/size][/color] !After purchasing the +1 Block Pack,play [color=#ad4800]" + broad_list[i][1] + "[/color] matcher to clear the level!";

            }
        }
    }
}
