using BingoBrain.Core;
using UnityEngine;
using BingoBrain.Asset;
using BingoBrain.HotFix;
using Unity.VisualScripting;
using DontConfuse;
using FairyGUI;


#if UNITY_EDITOR
using UnityEditor;
#endif

namespace BingoBrain
{
    public class BingoScene : BaseScene
    {
        public override int SceneIdx => 0;


        protected override void OnEnter()
        {
        }

        protected override void OnLeave()
        {
        }

        protected override void OnSwhSceCompl(object param = null)
        {
#if UNITY_EDITOR
            GameObject.Find("IngameDebugConsole").SetActive(false);
#endif
            StartUpAppProcess();
        }

        private void StartUpAppProcess()
        {
            Debug.Log("[ BingoBrain ] [ MainScene ] Start Up App Process");

            // 初始化资源
            OnPermanentAssetsInitComplete();
        }

        private void OnPermanentAssetsInitComplete(object param = null)
        {
            CtrlDispatcher.Instance.AddListener(CtrlMsg.Login_Succeed, OnLoginSucceed);
            // #if !UNITY_EDITOR && UNITY_ANDROID
            MaxADKit.Init();
            Debug.Log("init");
            // #endif
            OnInitAsset();
            AppDispatcher.Instance.AddListener(CsjInfoC.UI_LoadingInitAsset, OnInitAsset);
        }

        private void OnLoginSucceed(object param = null)
        {
            CtrlDispatcher.Instance.RemoveListener(CtrlMsg.Login_Succeed, OnLoginSucceed);
        }

        private void OnInitAsset(object param = null)
        {
            AppDispatcher.Instance.Dispatch(CsjInfoC.AppManagerRegister);
            AppDispatcher.Instance.Dispatch(CsjInfoC.InitUIMgr);
            AppDispatcher.Instance.AddListener(CsjInfoC.LoginInit, OnLoadingComplete);
            //   PreferencesMgr.Instance.InitPreferences();
            //   NetworkDispatcher.Instance.Dispatch(ExternalInfo.GetConfig);//quxiaozhushi
            //   NetworkDispatcher.Instance.AddListener(NetworkMsg.Start, ShowScene);//quxiaozhushi
        }

        private void OnLoadingComplete(object param = null)
        {
            CtrlDispatcher.Instance.Dispatch(CtrlMsg.Game_StartReady);
            TimerHelper.mEasy.AddTimer(0.1f, () =>
            {
                Audio.Instance.InitDefaultButtonClickSound(DoConst.UIButtonDefault);
                ModuleBoardk.Instance.AllModuleGameStart();
                ShowScene();
                SaveingPotHelper.CheckSaveingPot();
                SaveingPotHelper.TestingClearTime();
                // HideLoadingUI();
                if (GameHelper.IsGiftSwitch())
                {
                    WebviewManager.Instance.SetFullScreen();
                    int flyswitch = ConfigSystem.GetConfig<CommonModel>().flyswitch;
                    int propswitch = ConfigSystem.GetConfig<CommonModel>().propswitch;

                    int offset_y = ConfigSystem.GetConfig<CommonModel>().WVOffset[0];
                    int offset_y1 = ConfigSystem.GetConfig<CommonModel>().WVOffset[1];
                    Debug.Log("barry offset_y: " + offset_y + " offset_y1: " + offset_y1);  
                    float top_offset = 150;//fgui中的顶部信息的高度
                    float buttom_offset = 0;
                    if (Screen.safeArea.y != 0)
                    {//刘海屏
                        top_offset += Screen.safeArea.y;
                    }
                    WebviewManager.Instance.SetOffset(offset_y, offset_y1);
                    WebviewManager.Instance.SetPadding(0, top_offset / GRoot.inst.height, 0, buttom_offset / GRoot.inst.height);

                    WebviewManager.Instance.RefreshUrl();
                    // Debug.Log($"flyswitch==1 ------ {flyswitch == 1}");
                    // Debug.Log($"propswitch==1 ------ {propswitch == 1}");
                    WebviewManager.Instance.setFlyBtnTag(flyswitch == 1);
                    WebviewManager.Instance.setRewardBtnTag(propswitch == 1);
                    WebviewManager.Instance.SetDarkThough(true);
                    WebviewManager.Instance.ShowH5View(false);
                    WebviewManager.Instance.SetBtn(ConfigSystem.GetConfig<CommonModel>().propCoord[0], ConfigSystem.GetConfig<CommonModel>().propCoord[1], 60, 60);
                }
            });
            SaveingPotHelper.ResetHistory();
        }
        private bool isopen = false;
        private void ShowScene(object a = null)
        {
            if (isopen) return;
            UICtrlDispatcher.Instance.Dispatch(SkinInfo.EnterBingoUI_Open);
            GameHelper.PostFunnelLogin("enterButtonShow");
            isopen = true;
        }

        public override void Dispose()
        {
        }
    }
}