521 lines
19 KiB
C#
521 lines
19 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// 统一引用单例类
|
|
/// </summary>
|
|
public class GameManager : SingletonAutoMono<GameManager>
|
|
{
|
|
/// <summary>
|
|
/// 系统Id
|
|
/// </summary>
|
|
public int systemId;
|
|
|
|
public string tokenUrl;
|
|
|
|
#region 底层框架内容
|
|
|
|
/// <summary>
|
|
/// Ui管理类
|
|
/// </summary>
|
|
public static UIManager UIMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 事件中心
|
|
/// </summary>
|
|
public static EventCenter EventMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 公共mono
|
|
/// </summary>
|
|
public static MonoMgr MonoMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 二进制管理类
|
|
/// </summary>
|
|
public static BinaryManager BinaryMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// json管理类
|
|
/// </summary>
|
|
public static JsonManager JsonMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 场景加载管理类
|
|
/// </summary>
|
|
public static ScenesManager ScenesMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 资源加载类
|
|
/// </summary>
|
|
public static ResourcesManager ResourcesMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 音乐音效管理类
|
|
/// </summary>
|
|
public static MusicManager MusicMgr { get; private set; }
|
|
|
|
#endregion
|
|
|
|
#region 项目管理类
|
|
|
|
/// <summary>
|
|
/// 数据管理类
|
|
/// </summary>
|
|
public static DataManager DataMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 网络接口管理类
|
|
/// </summary>
|
|
public static NetManager NetMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 实训流程管理类
|
|
/// </summary>
|
|
public static ProcessManager ProcessMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 报告管理类
|
|
/// </summary>
|
|
public static ReportManager ReportMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 实训操作管理类
|
|
/// </summary>
|
|
public static HandsOnTrainingMgr HandsOnTrainingMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 学习或者练习的管理类
|
|
/// </summary>
|
|
public static RunModelMgr RunModelMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 背包管理类
|
|
/// </summary>
|
|
public static PacksackBagMgr PacksackBagMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 工具材料管理类
|
|
/// </summary>
|
|
public static ToolAndmaterialMgr ToolAndmaterialMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 数据重连管理类
|
|
/// </summary>
|
|
public static ReconnectMgr ReconnectMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 工单管理类
|
|
/// </summary>
|
|
public static WorkorderMgr WorkorderMgr { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 故障管理类
|
|
/// </summary>
|
|
public static FaultManager FaultManager { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 任务管理类
|
|
/// </summary>
|
|
//public static MissionMgr MissionMgr { get; private set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 初始化
|
|
/// </summary>
|
|
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<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
|
|
{
|
|
print("显示加载页面");
|
|
panel.Init();
|
|
EventMgr.EventTrigger<float>(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<float> scoreTemp = new List<float>();
|
|
List<ExamContentJsonItem> 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<UI_MessagePanel>(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<string>(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
|
|
}
|
|
/// <summary>
|
|
///首次加载和返回模式选择界面
|
|
/// </summary>
|
|
/// <param name="isReset"></param>
|
|
public void ShowUIPanelAndLoadScene(bool isReset = false)
|
|
{
|
|
if (isReset)
|
|
{
|
|
ResetStateAndEvent();
|
|
}
|
|
|
|
UIMgr.ShowPanel<UI_MainTitlePanel>(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<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
|
|
//{
|
|
//GameManager.UIMgr.ShowPanel<UI_MainTitlePanel>(E_UI_Layer.Bot, (panel) =>
|
|
//{
|
|
// panel.Init();
|
|
//});
|
|
|
|
//panel.Init();
|
|
GameManager.EventMgr.EventTrigger<float>(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<UI_LoadingPanel>();
|
|
//GameManager.UIMgr.HidePanel<UI_SelectModePanel>();
|
|
GameManager.UIMgr.HidePanel<UI_BGPanel>();
|
|
GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
|
|
UIMgr.HidePanel<UI_LoadingPanel>();
|
|
//if (GameManager.RunModelMgr.ModeType != E_ModeType.Study)
|
|
{
|
|
GameManager.RunModelMgr.startTime = DateTime.Now;
|
|
GameManager.NetMgr.setTime();
|
|
Debug.Log("开始记时:" + GameManager.RunModelMgr.startTime.ToString());
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
List<D_SubProcess> d_SubProcesses = new List<D_SubProcess>();
|
|
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<UI_LoadingPanel>();
|
|
//GameManager.UIMgr.HidePanel<UI_SelectModePanel>();
|
|
GameManager.UIMgr.HidePanel<UI_BGPanel>();
|
|
GameManager.EventMgr.EventTrigger<float>(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<int>(Enum_EventType.SwitchSubProcess, subProcessID);
|
|
//通知物体高亮
|
|
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
//});
|
|
}
|
|
else
|
|
{
|
|
UIMgr.ShowPanel<UI_BGPanel>(E_UI_Layer.Bot);
|
|
//显示UI菜单列表
|
|
UIMgr.ShowPanel<UI_SelectModePanel>(E_UI_Layer.Mid, panel => { panel.Init(); });
|
|
//加载场景 /显示UI
|
|
ScenesMgr.LoadSceneAsyn("02_MenuScene", () =>
|
|
{
|
|
//修改本地文件
|
|
NetMgr.SaveInfo("1");
|
|
EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
|
|
});
|
|
}
|
|
|
|
}
|
|
private void InitializationUI()
|
|
{
|
|
if (!GameManager.UIMgr.GetPanel<UI_TaskListPanel>())
|
|
{
|
|
GameManager.UIMgr.ShowPanel<UI_TaskListPanel>(E_UI_Layer.Bot, (panel) =>
|
|
{
|
|
panel.Init(GameManager.ProcessMgr.subProcessId);
|
|
});
|
|
}
|
|
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
|
|
{
|
|
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
|
|
GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcess, GameManager.ProcessMgr.subProcessId);
|
|
}
|
|
if (!GameManager.UIMgr.GetPanel<UI_MenuBar>())
|
|
{
|
|
GameManager.UIMgr.ShowPanel<UI_MenuBar>(E_UI_Layer.Mid, (panel) =>
|
|
{
|
|
panel.Init();
|
|
GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchScene, GameManager.RunModelMgr.SceneType);
|
|
});
|
|
}
|
|
//firstPersonController.gameObject.SetActive(true);
|
|
}
|
|
/// <summary>
|
|
/// 练习,重新练习会调用
|
|
/// </summary>
|
|
public void Practice()
|
|
{
|
|
ResetStateAndEvent();
|
|
RunModelMgr.ModeType = E_ModeType.Practice;
|
|
EventMgr.EventTrigger(Enum_EventType.SwitchMode);
|
|
ProcessMgr.Init(RunModelMgr.schemeID);
|
|
UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
|
|
{
|
|
panel.Init();
|
|
EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);
|
|
ScenesMgr.LoadSceneAsyn($"{systemId}_{RunModelMgr.schemeID}_03_OfficeScene", () =>
|
|
{
|
|
if (UIMgr.GetPanel<UI_SelectDevicePanel>())
|
|
UIMgr.HidePanel<UI_SelectDevicePanel>();
|
|
if (UIMgr.GetPanel<UI_BGPanel>())
|
|
UIMgr.HidePanel<UI_BGPanel>();
|
|
EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
|
|
//if (GameManager.RunModelMgr.ModeType != E_ModeType.Study)
|
|
{
|
|
GameManager.RunModelMgr.startTime = DateTime.Now;
|
|
Debug.Log("开始记时:" + GameManager.RunModelMgr.startTime.ToString());
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 学习调用
|
|
/// </summary>
|
|
public void Study()
|
|
{
|
|
ResetStateAndEvent();
|
|
RunModelMgr.ModeType = E_ModeType.Study;
|
|
EventMgr.EventTrigger(Enum_EventType.SwitchMode);
|
|
ProcessMgr.Init(RunModelMgr.schemeID);
|
|
UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
|
|
{
|
|
panel.Init();
|
|
EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);
|
|
ScenesMgr.LoadSceneAsyn($"{systemId}_{RunModelMgr.schemeID}_03_OfficeScene", () =>
|
|
{
|
|
if (UIMgr.GetPanel<UI_SelectDevicePanel>())
|
|
UIMgr.HidePanel<UI_SelectDevicePanel>();
|
|
if (UIMgr.GetPanel<UI_BGPanel>())
|
|
UIMgr.HidePanel<UI_BGPanel>();
|
|
EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
|
|
});
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 清除一些动态
|
|
/// </summary>
|
|
private void ResetStateAndEvent()
|
|
{
|
|
UIMgr.imageTips.HideTips();
|
|
if (UIMgr.GetPanel<UI_TopTipPanel>())
|
|
UIMgr.HidePanel<UI_TopTipPanel>();
|
|
if (UIMgr.GetPanel<UI_TaskListPanel>())
|
|
UIMgr.HidePanel<UI_TaskListPanel>();
|
|
if (UIMgr.GetPanel<UI_MenuBar>())
|
|
UIMgr.HidePanel<UI_MenuBar>();
|
|
UIMgr.GetPanel<UI_MainTitlePanel>().ResetByModeType();
|
|
PacksackBagMgr.ClearAllData();
|
|
EventMgr.Clear();
|
|
UIMgr.GetPanel<UI_MainTitlePanel>().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();
|
|
}
|
|
} |