// #if UNITY_EDITOR
// #endif

using System.Diagnostics;
using System.IO;
using DG.Tweening;
using IgnoreOPS;
// using SGModule.ApplePay;
using SGModule.NetKit;


namespace RedHotRoast
{
    public class MainScene : BaseScene
    {
        public override int SceneIdx => 0;


        protected override void OnEnter()
        {
        }

        protected override void OnLeave()
        {
        }

        protected override void OnSwitchSceneComplete(object param = null)
        {

            StartUpAppProcess();

        }

        private void StartUpAppProcess()
        {
            OnPermanentAssetsInitComplete();
        }

        private void OnPermanentAssetsInitComplete(object param = null)
        {
            CtrlDispatcher.Instance.AddListener(CtrlMsg.Login_Succeed, OnLoginSucceed);
            var isAssetBundleLoad = false;

            // SuperApplication.Instance.AddComponent<AppsFlyerObjectScript1>();

#if !UNITY_EDITOR && UNITY_ANDROID
            // MaxADKit.Init();
#endif

#if UNITY_EDITOR
            isAssetBundleLoad = false;
#else
            isAssetBundleLoad = false;
#endif
            if (isAssetBundleLoad)
            {
                int value = 0;
                LegendFileKit.GetLocalAssetBundle(
                    max => { GameDispatcher.Instance.Dispatch(GameMsg.UpdateHotFixMax, max + 1); }, () =>
                    {
                        value++;
                        // GameDispatcher.Instance.Dispatch(GameMsg.UpdateHotFixProgress, value);
                    });
            }
            else
            {
                OnInitAsset();
            }
            AppDispatcher.Instance.AddListener(AppMsg.UI_LoadingInitAsset, OnInitAsset);

            TrackKit.TrackLoginFunnel(LoginFunnelEventType.AfSend);
            TrackKit.TrackLoginFunnel(LoginFunnelEventType.AfRecv, "success");
        }

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

        private void OnInitAsset(object param = null)
        {

            AppDispatcher.Instance.Dispatch(AppMsg.AppManagerRegister);
            AppDispatcher.Instance.Dispatch(AppMsg.InitUIMgr);
            NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);

            AppDispatcher.Instance.AddListener(AppMsg.LoginInit, OnLoadingComplete);

            // PreferencesMgr.Instance.InitPreferences();
            // NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetConfig);
        }

        private void OnLoadingComplete(object param = null)
        {

            // Debug.Log("OnLoadingComplete------------");
            CtrlDispatcher.Instance.Dispatch(CtrlMsg.Game_StartReady);
            if (GameHelper.IsGiftSwitch()) CrazyAsyKit.StartCoroutine(TextureHelper.WriteTempBeforeOpenCoroutine_());

            TimerHelper.mEasy.AddTimer(0.5f, () =>
            {
                AudioManager.Instance.InitDefaultButtonClickSound(AudioConst.UIButtonDefault);
                ModuleManager.Instance.AllModuleGameStart();
                ShowScene();
                SaveingPotHelper.CheckSaveingPot();
                SaveingPotHelper.TestingClearTime();
            });
        }

        private static bool is_open = false;
        private void ShowScene()
        {
            if (is_open) return;
            is_open = true;
            // PreDownloadManager.InitializeLiveData();

            UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.GameLoginUI_Open);
            ChatHelper.CheckReply();


            if (GameHelper.IsGiftSwitch())
            {
                PreDownloadManager.StartDownloadLivePicture();
                PreDownloadManager.StartDownloadAlbumsPicture();
                //预下载视频
                PreDownloadManager.StartDownload();

                PreDownloadManager.StartDownloadSecretPicture();
                // DOVirtual.DelayedCall(2, () =>
                // {
                //     ApplePayManager.GetVipHistory();
                // });
            }
        }

        public override void Dispose()
        {
        }
    }
}
