diff --git a/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs new file mode 100644 index 0000000..8de9982 --- /dev/null +++ b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs @@ -0,0 +1,27 @@ +/// +/// 保存用户考试状态 +/// + +public class TB_UserExamStat +{ + /// + ///当前方案ID + /// + public int schemeID = -1; + + /// + /// 当前流程Id + /// + public int processId = -1; + + /// + /// 当前子流程Id + /// + public int subProcessId = -1; + + /// + /// 当前子流程步骤Id + /// + public int subProcessStepId = -1; + +} diff --git a/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta new file mode 100644 index 0000000..50d6cb8 --- /dev/null +++ b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e7cebc125e92494faf01d8936568a90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Project/Manager/DataManager.cs b/Assets/Scripts/Project/Manager/DataManager.cs index 4b94790..ebeeb42 100644 --- a/Assets/Scripts/Project/Manager/DataManager.cs +++ b/Assets/Scripts/Project/Manager/DataManager.cs @@ -170,6 +170,7 @@ public class DataManager : BaseManager D_SubProcessStep operation = new D_SubProcessStep(); operation.processId = process.id; operation.schemeId = subject.id; + operation.subProcessId = step.id; operation.subProcessStepName = operationNode.Attributes["subProcessStepName"].Value; operation.triggerID = operationNode.Attributes["triggerID"].Value; operation.tipTitle = operationNode.Attributes["tipTitle"].Value; diff --git a/Assets/Scripts/Project/Manager/GameManager.cs b/Assets/Scripts/Project/Manager/GameManager.cs index 4979dbb..bc69488 100644 --- a/Assets/Scripts/Project/Manager/GameManager.cs +++ b/Assets/Scripts/Project/Manager/GameManager.cs @@ -97,6 +97,11 @@ public class GameManager : SingletonAutoMono /// public static ToolAndmaterialMgr ToolAndmaterialMgr { get; private set; } + /// + /// 鏁版嵁閲嶈繛绠$悊绫 + /// + public static ReconnectMgr ReconnectMgr { get; private set; } + #endregion /// @@ -121,6 +126,7 @@ public class GameManager : SingletonAutoMono RunModelMgr = RunModelMgr.Instance; ToolAndmaterialMgr = ToolAndmaterialMgr.Instance; PacksackBagMgr = PacksackBagMgr.Instance; + //ReconnectMgr = ReconnectMgr.Instance;//閲嶈繛绠$悊鍒濆鍖 DataMgr.Init(); InitData(); diff --git a/Assets/Scripts/Project/Manager/ReconnectMgr.cs b/Assets/Scripts/Project/Manager/ReconnectMgr.cs new file mode 100644 index 0000000..e18100f --- /dev/null +++ b/Assets/Scripts/Project/Manager/ReconnectMgr.cs @@ -0,0 +1,106 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System.IO; +using LitJson; + +/// +/// 断线重连管理 +/// +public class ReconnectMgr : SingletonMono +{ + [HideInInspector] + public float recordDuration = -1; + private float recordCountdown = -1; + private TB_UserExamStat UserExamStat = new TB_UserExamStat(); + private string localStatPath = ""; + private string localStatFileName = "realtimeStat.json"; + /// + /// 初始化函数,记录时间间隔 + /// + public void Init( ) + { + localStatPath = Application.streamingAssetsPath + "/" + localStatFileName; + //if (File.Exists( localStatPath ))//启动后检查有没有之前的遗留 + //{ + // File.Delete( localStatPath ); + //} + } + + ReconnectMgr()//构造函数 + { + Init( ); + } + + /// + /// 记录用户状态 + /// + public void RealtimeStatWriter() + { + //记录步骤相关各项信息 + UserExamStat.schemeID = ProcessManager.Instance.schemeID; + UserExamStat.processId = ProcessManager.Instance.processId; + UserExamStat.subProcessId = ProcessManager.Instance.subProcessId; + UserExamStat.subProcessStepId = ProcessManager.Instance.subProcessStepId; + + string UserJson = JsonConvert.SerializeObject(UserExamStat, Formatting.Indented); + Debug.Log("用户当前状态" + UserJson); + + File.WriteAllText(localStatPath, UserJson); + } + + /// + /// 读取用户状态(先使用同步,后用异步) + /// + public bool RealtimeStatReader() + { + if (File.Exists(localStatPath)) + { + try + { + StreamReader sr = new StreamReader(localStatPath); + string user_last_stat = sr.ReadToEnd(); + sr.Close(); + UserExamStat = JsonMapper.ToObject(user_last_stat); + Debug.Log("用户当前schemeID:" + UserExamStat.schemeID); + return true; + } + catch (System.Exception e) + { + Debug.LogError(e.ToString()); + return false; + } + } + else { + return false; + } + } + + // Start is called before the first frame update + //void Start() + //{ + + //} + + // Update is called once per frame + void Update() + { + if (Input.GetKeyDown(KeyCode.S))//测试用,按S读取状态保存 + { + RealtimeStatWriter(); + } + else if(Input.GetKeyDown(KeyCode.R)) + { + RealtimeStatReader(); + + ProcessManager.Instance.HandoverProcess(UserExamStat.processId, UserExamStat.subProcessId, UserExamStat.subProcessStepId); + StepStateControl.instance.InvokeInitStepState(GameManager.Instance.systemId, GameManager.ProcessMgr.d_Scheme.id, UserExamStat.subProcessId); + GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcess, UserExamStat.subProcessId); + //Debug.LogError(ProcessManager.Instance.subProcessStepTriggerID); + GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID); + } + } +} diff --git a/Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta b/Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta new file mode 100644 index 0000000..2acf645 --- /dev/null +++ b/Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b0607653b5fed643b96912f73248d7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: