using Cysharp.Threading.Tasks; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using System.Runtime.InteropServices.ComTypes; using UnityEngine; /// /// 统一引用单例类 /// public class GameManager : SingletonAutoMono { /// /// 系统Id /// public int systemId; /// /// 选择科目之后跳入的场景名称 /// public string startSceneName; public string tokenUrl; #region 底层框架内容 /// /// Ui管理类 /// public static UIManager UIMgr { get; private set; } /// /// 事件中心 /// public static EventCenter EventMgr { get; private set; } /// /// 公共mono /// public static MonoMgr MonoMgr { get; private set; } /// /// 二进制管理类 /// public static BinaryManager BinaryMgr { get; private set; } /// /// json管理类 /// public static JsonManager JsonMgr { get; private set; } /// /// 场景加载管理类 /// public static ScenesManager ScenesMgr { get; private set; } /// /// 资源加载类 /// public static ResourcesManager ResourcesMgr { get; private set; } /// /// 音乐音效管理类 /// public static MusicManager MusicMgr { get; private set; } #endregion #region 项目管理类 /// /// 数据管理类 /// public static DataManager DataMgr { get; private set; } /// /// 网络接口管理类 /// public static NetManager NetMgr { get; private set; } /// /// 实训流程管理类 /// public static ProcessManager ProcessMgr { get; private set; } /// /// 报告管理类 /// public static ReportManager ReportMgr { get; private set; } /// /// 实训操作管理类 /// public static HandsOnTrainingMgr HandsOnTrainingMgr { get; private set; } /// /// 学习或者练习的管理类 /// public static RunModelMgr RunModelMgr { get; private set; } /// /// 背包管理类 /// public static PacksackBagMgr PacksackBagMgr { get; private set; } /// /// 工具材料管理类 /// public static ToolAndmaterialMgr ToolAndmaterialMgr { get; private set; } /// /// 数据重连管理类 /// public static ReconnectMgr ReconnectMgr { get; private set; } /// /// 工单管理类 /// public static WorkorderMgr WorkorderMgr { get; private set; } /// /// 故障管理类 /// public static FaultManager FaultManager { get; private set; } /// /// 任务管理类 /// public static MissionMgr MissionMgr { get; private set; } #endregion /// /// 初始化 /// public void Init(int _systemId, string _startSceneName) { systemId = _systemId; startSceneName = _startSceneName; UIMgr = UIManager.Instance; EventMgr = EventCenter.Instance; MonoMgr = MonoMgr.Instance; JsonMgr = JsonManager.Instance; ScenesMgr = ScenesManager.Instance; ResourcesMgr = ResourcesManager.Instance; MusicMgr = MusicManager.Instance; DataMgr = DataManager.Instance; NetMgr = NetManager.Instance; ProcessMgr = ProcessManager.Instance; ReportMgr = ReportManager.Instance; HandsOnTrainingMgr = HandsOnTrainingMgr.Instance; RunModelMgr = RunModelMgr.Instance; ToolAndmaterialMgr = ToolAndmaterialMgr.Instance; PacksackBagMgr = PacksackBagMgr.Instance; ReconnectMgr = ReconnectMgr.Instance; //重连管理初始化 WorkorderMgr = WorkorderMgr.Instance; //工单管理初始化 FaultManager = FaultManager.Instance; MissionMgr = MissionMgr.Instance; DataMgr.Init(); WorkorderMgr.Init(); NetMgr.Init(SendGet); InitData(); } private void SendGet(IEnumerator obj) { StartCoroutine(obj); } private void InitData() { UIMgr.ShowPanel(E_UI_Layer.System, (panel) => { print("显示加载页面"); panel.Init(); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.1f); //加载本地文件数据 //初始化用户数据 模式 token等必要数据 //读取成功 获取模式 根据模式显示初始化页面 NetMgr.GetConfig((isSuccess) => { if (isSuccess) { //读取成功 获取模式 根据模式显示初始化页面 // 3 为考试模式 if (NetMgr.operationType == "3") { RunModelMgr.ModeType = E_ModeType.Exam; RunModelMgr.schemeID = NetMgr.schemeID; EventMgr.EventTrigger(Enum_EventType.SwitchMode); ProcessMgr.Init(NetMgr.schemeID); if (NetMgr.currentExamData.data != null) { ScoreBase sb = ScoreManager.instance.GetScoreBaseBySchemeID(RunModelMgr.schemeID); if (sb != null) { List scoreTemp = new List(); List examContentJson = NetMgr.currentExamData.data.examContentJson; for (int i = 0; i < examContentJson.Count; i++) { scoreTemp.Add(examContentJson[i].defaultScore); } sb.SetScore(scoreTemp); } else { Debug.Log("科目不对"); } } else { UIMgr.ShowPanel(E_UI_Layer.System, (p) => { p.Init("错误", "试卷数据没有获取到", E_MessageType.Warning, () => { }); }); Debug.Log("数据不对"); } //HQB 1106 网络加载故障数据 if (NetMgr.currentExamData.data.faultData != null) FaultManager.Instance.InitFaults( new List(NetMgr.currentExamData.data.faultData.faultText.Split(','))); //HQB 1123 网络加载任务背景数据 if (NetMgr.currentExamData.data.backJson != null) { MissionMgr.Init(); JObject jsonObj = JObject.Parse(NetMgr.currentExamData.data.backJson); Type typeOfconfig = MissionMgr.mission.configurations.GetType(); PropertyInfo[] properties = typeOfconfig.GetProperties(); foreach (PropertyInfo property in properties) { if (jsonObj[property.Name] != null) { property.SetValue(MissionMgr.mission.configurations, jsonObj[property.Name].ToObject(property.PropertyType), null); } else { property.SetValue(MissionMgr.mission.configurations, "XXX", null); } } MissionMgr.SaveMissionData(); } //HQB 1123 考试的起始时间 RunModelMgr.startTime = DateTime.Now; } else { ///练习模式和学习模式 } tokenUrl = NetMgr.GetTokenURL(); OnRefreshToken(); ShowUIPanelAndLoadScene(); } else { //读取失败 提示信息并退出应用 print("读取配置信息失败,退出应用"); Application.Quit(); } }); }); InitialTaskUIShow.Instance.Init(); //HQB } /// ///首次加载和返回模式选择界面 /// /// public void ShowUIPanelAndLoadScene(bool isReset = false) { if (isReset) { ResetStateAndEvent(); } UIMgr.ShowPanel(E_UI_Layer.Bot); UIMgr.ShowPanel(E_UI_Layer.Bot, (panel) => { panel.Init(); }); //显示UI菜单列表 if (NetMgr.operationType != "3") { UIMgr.ShowPanel(E_UI_Layer.Mid, panel => { panel.Init(); }); //加载场景 /显示UI ScenesMgr.LoadSceneAsyn("02_MenuScene", () => { //修改本地文件 NetMgr.SaveInfo("1"); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); }); } else { ScenesMgr.LoadSceneAsyn($"{systemId}_{RunModelMgr.schemeID}_{startSceneName}", () => { UIMgr.HidePanel(); NetMgr.SaveInfo("1"); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); }); } } public void ModeTypeIsExam() { } /// /// 练习,重新练习会调用 /// public void Practice() { ResetStateAndEvent(); RunModelMgr.ModeType = E_ModeType.Practice; EventMgr.EventTrigger(Enum_EventType.SwitchMode); ProcessMgr.Init(RunModelMgr.schemeID); UIMgr.ShowPanel(E_UI_Layer.System, (panel) => { panel.Init(); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.1f); ScenesMgr.LoadSceneAsyn($"{systemId}_{RunModelMgr.schemeID}_{startSceneName}", () => { if (UIMgr.GetPanel()) UIMgr.HidePanel(); if (UIMgr.GetPanel()) UIMgr.HidePanel(); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); }); }); } /// /// 学习调用 /// public void Study() { ResetStateAndEvent(); RunModelMgr.ModeType = E_ModeType.Study; EventMgr.EventTrigger(Enum_EventType.SwitchMode); ProcessMgr.Init(RunModelMgr.schemeID); UIMgr.ShowPanel(E_UI_Layer.System, (panel) => { panel.Init(); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.1f); ScenesMgr.LoadSceneAsyn($"{systemId}_{RunModelMgr.schemeID}_{startSceneName}", () => { if (UIMgr.GetPanel()) UIMgr.HidePanel(); if (UIMgr.GetPanel()) UIMgr.HidePanel(); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); }); }); } /// /// 清除一些动态 /// private void ResetStateAndEvent() { UIMgr.imageTips.HideTips(); if (UIMgr.GetPanel()) UIMgr.HidePanel(); if (UIMgr.GetPanel()) UIMgr.HidePanel(); if (UIMgr.GetPanel()) UIMgr.HidePanel(); UIMgr.GetPanel().ResetByModeType(); PacksackBagMgr.ClearAllData(); EventMgr.Clear(); UIMgr.GetPanel().ShowMe(); ScoreManager.instance.ReInit(); if (SubjectControllerBase.Instance != null) SubjectControllerBase.Instance.OnInit(); RunModelMgr.startTime = DateTime.Now; Debug.Log("重置开始时间"); RunModelMgr.isOnceOfficeAni = false; InitialTaskUIShow.Instance.Init(); //HQB 进入场景弹出任务说明 } public async void OnRefreshToken() { while (true) { Debug.Log("NetMgr.Get(tokenUrl)11111111"); await NetMgr.Get(tokenUrl); Debug.Log("NetMgr.Get(tokenUrl)"); await UniTask.Delay(300000); } } public void End() { //修改本地文件 NetMgr.SaveInfo("0"); //退出应用 Application.Quit(); } private void OnDestroy() { //修改本地文件 NetMgr.SaveInfo("0"); } }