using System;  
 | 
using System.Collections;  
 | 
using System.Collections.Generic;  
 | 
using UnityEngine;  
 | 
using Cysharp.Threading;  
 | 
using Cysharp.Threading.Tasks;  
 | 
  
 | 
/// <summary>  
 | 
/// Main类,作为热更新程序集的入口点  
 | 
/// </summary>  
 | 
public class Main  
 | 
{  
 | 
    public static List<IGameSystemManager> managers = new List<IGameSystemManager>();  
 | 
  
 | 
    /// <summary>  
 | 
    /// 初始化函数,由Launch类调用  
 | 
    /// </summary>  
 | 
    public static void Init()  
 | 
    {  
 | 
        Debug.Log("Main.Init() 被调用");  
 | 
        var launchWin = UIManager.Instance.GetUI<LaunchWin>();  
 | 
        if (launchWin != null)  
 | 
        {  
 | 
            launchWin.FadeOut();  
 | 
        }  
 | 
        SwitchToLoginScene();  
 | 
    }  
 | 
  
 | 
    private static void SwitchToLoginScene()  
 | 
    {  
 | 
        // Debug.Log("打开登录界面");  
 | 
        // UIManager.Instance.OpenWindow<LoginWin>();  
 | 
        Debug.Log("切换到登录场景");  
 | 
        ConfigManager.Instance.Init();  
 | 
        GeneralDefine.Init();  
 | 
#if UNITY_EDITOR  
 | 
        SysNotifyMgr.Instance.BeforePlayerDataInitializeEvent();  
 | 
#endif  
 | 
        StageManager.Instance.ToLoginScene();  
 | 
  
 | 
        ClearGameData();  
 | 
  
 | 
    }  
 | 
  
 | 
    public static async UniTask InitManagers()  
 | 
    {  
 | 
        ReleaseMgrs();  
 | 
  
 | 
        // 初始化游戏系统  
 | 
        managers.Add(BattleManager.Instance);  
 | 
        managers.Add(VirtualPackManager.Instance);  
 | 
        managers.Add(OtherPlayerDetailManager.Instance);  
 | 
        managers.Add(RechargeManager.Instance);  
 | 
        managers.Add(StoreModel.Instance);  
 | 
        managers.Add(PhantasmPavilionModel.Instance);  
 | 
        managers.Add(GuildManager.Instance);  
 | 
        managers.Add(TeamManager.Instance);  
 | 
        managers.Add(TaskManager.Instance);  
 | 
        managers.Add(MailManager.Instance);  
 | 
        managers.Add(PackManager.Instance);  
 | 
        managers.Add(HappyXBModel.Instance);  
 | 
        managers.Add(HeroManager.Instance);  
 | 
        managers.Add(GMCmdManager.Instance);  
 | 
        managers.Add(GuildEmblemModel.Instance);  
 | 
        managers.Add(EquipModel.Instance);  
 | 
        managers.Add(DungeonManager.Instance);  
 | 
        managers.Add(CustomizedRechargeModel.Instance);  
 | 
        managers.Add(CustomizedGiftModel.Instance);  
 | 
        managers.Add(ChatManager.Instance);  
 | 
        managers.Add(ChatBubbleManager.Instance);  
 | 
        managers.Add(OfficialRankManager.Instance);  
 | 
        managers.Add(RankModel.Instance);  
 | 
        managers.Add(PlayerMainDate.Instance);  
 | 
        managers.Add(HeroUIManager.Instance);  
 | 
        managers.Add(InvestModel.Instance);  
 | 
        managers.Add(BlessLVManager.Instance);  
 | 
        managers.Add(AutoFightModel.Instance);  
 | 
        managers.Add(MainLevelManager.Instance);  
 | 
        managers.Add(BattleSettlementManager.Instance);  
 | 
        managers.Add(GoldRushManager.Instance);  
 | 
        managers.Add(FirstChargeManager.Instance);  
 | 
        managers.Add(NewBieCenter.Instance);  
 | 
        managers.Add(AdsManager.Instance);  
 | 
        managers.Add(BoneFieldManager.Instance);  
 | 
        managers.Add(ArenaManager.Instance);  
 | 
        foreach (var manager in managers)  
 | 
        {  
 | 
            manager.Init();  
 | 
        }  
 | 
  
 | 
        await UniTask.Yield();  
 | 
    }  
 | 
  
 | 
    public static void OnEnterGameScene()  
 | 
    {  
 | 
        // 初始化游戏场景  
 | 
        Debug.Log("初始化游戏场景");  
 | 
  
 | 
        foreach (var manager in managers)  
 | 
        {  
 | 
            manager.RequestNessaryData();  
 | 
        }  
 | 
  
 | 
        UIManager.Instance.CloseWindow<LaunchBackGroundWin>();  
 | 
        UIManager.Instance.CloseWindow<LoginWin>();  
 | 
    }  
 | 
  
 | 
    public static void OnSwitchToLoginScene()  
 | 
    {  
 | 
        //  前面有重新InitManagers了 这里就不在做清除  
 | 
        // ReleaseMgrs();  
 | 
    }  
 | 
  
 | 
    private static void ReleaseMgrs()  
 | 
    {  
 | 
        foreach (var manager in managers)  
 | 
        {  
 | 
            manager.Release();  
 | 
        }  
 | 
  
 | 
        managers.Clear();  
 | 
    }  
 | 
  
 | 
    /// <summary>  
 | 
    /// 打开登录界面  
 | 
    /// </summary>  
 | 
    private static void OpenLoginUI()  
 | 
    {  
 | 
    }  
 | 
  
 | 
  
 | 
    //这里清理时机一定是重新登录/切换账号,而不是短暂的断线重连  
 | 
    static void ClearGameData()  
 | 
    {  
 | 
        DTC0403_tagPlayerLoginLoadOK.finishedLogin = false;  
 | 
        DTC0102_tagCDBPlayer.isAfterPlayerDataInitialize = false;  
 | 
        ConfirmCancel.toggleCheckDict.Clear();  
 | 
    }  
 | 
} 
 |