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 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) { systemId = _systemId; 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; DataMgr.Init(); WorkorderMgr.Init(); NetMgr.Init(DoStartCoroutine); InitData(); } private void DoStartCoroutine(IEnumerator routine) { StartCoroutine(routine); } 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, (panel) => { panel.Init(); }); //GameManager.NetMgr.operationType = "3"; if (GameManager.NetMgr.operationType == "3") { var modeType = E_ModeType.Exam; GameManager.RunModelMgr.ModeType = modeType; GameManager.RunModelMgr.schemeID = 7002; GameManager.ProcessMgr.Init(GameManager.RunModelMgr.schemeID); //GameManager.UIMgr.ShowPanel(E_UI_Layer.System, (panel) => //{ //GameManager.UIMgr.ShowPanel(E_UI_Layer.Bot, (panel) => //{ // panel.Init(); //}); //panel.Init(); GameManager.EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.1f); GameManager.NetMgr.init_getSerData(() => { if (GameManager.NetMgr.getSerData.isComp == "1") { GameManager.ScenesMgr.LoadSceneAsyn($"{GameManager.Instance.systemId}_{GameManager.RunModelMgr.schemeID}_03_OfficeScene", () => { //UIMgr.HidePanel(); //GameManager.UIMgr.HidePanel(); GameManager.UIMgr.HidePanel(); GameManager.EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); UIMgr.HidePanel(); //if (GameManager.RunModelMgr.ModeType != E_ModeType.Study) { GameManager.RunModelMgr.startTime = DateTime.Now; GameManager.NetMgr.setTime(); Debug.Log("开始记时:" + GameManager.RunModelMgr.startTime.ToString()); } }); return; } List d_SubProcesses = new List(); D_Scheme d_Scheme = GameManager.ProcessMgr.d_Scheme; for (int i = 0; i < d_Scheme.processes.Count; i++) { for (int j = 0; j < d_Scheme.processes[i].subProcesses.Count; j++) { d_SubProcesses.Add(d_Scheme.processes[i].subProcesses[j]); } } string[] sArr = GameManager.NetMgr.getSerData.score.Split(','); int len = sArr.Length; int id = int.Parse(GameManager.NetMgr.getSerData.currentProcess); Score_7002.process = id; for (int i = 0; i < len; i++) { if (i + 1 <= Score_7002.process) { if (Score_7002.static_steps[i + 1].maxScore == 0) { Score_7002.static_steps[i + 1].SetScore(true); } else { Score_7002.static_steps[i + 1].SetScore(float.Parse(sArr[i]) / Score_7002.static_steps[i + 1].maxScore); } Score_7002.scoreList[i + 1] = int.Parse(sArr[i]); } } int processID = d_SubProcesses[id].processId; int subProcessID = d_SubProcesses[id].id; int subProcessStepID = d_SubProcesses[id].subProcessStepes[0].id; //UIMgr.HidePanel(); //GameManager.UIMgr.HidePanel(); GameManager.UIMgr.HidePanel(); GameManager.EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); //if (GameManager.RunModelMgr.ModeType != E_ModeType.Study) { GameManager.RunModelMgr.startTime = DateTime.Now; GameManager.NetMgr.setTime(); Debug.Log("开始记时:" + GameManager.RunModelMgr.startTime.ToString()); } GameManager.RunModelMgr.isOnceOfficeAni = true; if (id > 2) { InitializationUI(); } //GameManager.NetMgr.getSerData GameManager.ProcessMgr.HandoverProcess(processID, subProcessID, subProcessStepID); //重置物体 StepStateControl.instance.InvokeInitStepState(GameManager.Instance.systemId, GameManager.ProcessMgr.d_Scheme.id, subProcessID); if (modeType == E_ModeType.Study) { //通知ui高亮 GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcess, subProcessID); //通知物体高亮 GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID); } }); //}); } else { UIMgr.ShowPanel(E_UI_Layer.Bot); //显示UI菜单列表 UIMgr.ShowPanel(E_UI_Layer.Mid, panel => { panel.Init(); }); //加载场景 /显示UI ScenesMgr.LoadSceneAsyn("02_MenuScene", () => { //修改本地文件 NetMgr.SaveInfo("1"); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); }); } } private void InitializationUI() { if (!GameManager.UIMgr.GetPanel()) { GameManager.UIMgr.ShowPanel(E_UI_Layer.Bot, (panel) => { panel.Init(GameManager.ProcessMgr.subProcessId); }); } if (GameManager.RunModelMgr.ModeType == E_ModeType.Study) { GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID); GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcess, GameManager.ProcessMgr.subProcessId); } if (!GameManager.UIMgr.GetPanel()) { GameManager.UIMgr.ShowPanel(E_UI_Layer.Mid, (panel) => { panel.Init(); GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchScene, GameManager.RunModelMgr.SceneType); }); } //firstPersonController.gameObject.SetActive(true); } /// /// 练习,重新练习会调用 /// 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}_03_OfficeScene", () => { if (UIMgr.GetPanel()) UIMgr.HidePanel(); if (UIMgr.GetPanel()) UIMgr.HidePanel(); EventMgr.EventTrigger(Enum_EventType.UpdateProgress, 0.9f); //if (GameManager.RunModelMgr.ModeType != E_ModeType.Study) { GameManager.RunModelMgr.startTime = DateTime.Now; Debug.Log("开始记时:" + GameManager.RunModelMgr.startTime.ToString()); } }); }); } /// /// 学习调用 /// 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}_03_OfficeScene", () => { 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(); 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(); } }