From b31f0f125d87ba7465726202c1adcf62969c0a4d Mon Sep 17 00:00:00 2001
From: liuyu <272912176@qq.com>
Date: Mon, 2 Sep 2024 15:18:32 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E8=BF=9E=E5=8A=9F=E8=83=BD:=E5=8F=AF?=
=?UTF-8?q?=E4=BB=A5=E4=BF=9D=E5=AD=98=E5=BD=93=E5=89=8D=E5=AD=90=E6=AD=A5?=
=?UTF-8?q?=E9=AA=A4,=E5=8F=AF=E4=BB=A5=E6=89=8B=E5=8A=A8=E8=B0=83?=
=?UTF-8?q?=E7=94=A8=E8=A7=A6=E5=8F=91=E5=AD=90=E6=AD=A5=E9=AA=A4=E5=88=87?=
=?UTF-8?q?=E6=8D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../DataContainer/TB_UserExamStat.cs | 27 +++++
.../DataContainer/TB_UserExamStat.cs.meta | 11 ++
Assets/Scripts/Project/Manager/GameManager.cs | 6 +
.../Scripts/Project/Manager/ReconnectMgr.cs | 106 ++++++++++++++++++
.../Project/Manager/ReconnectMgr.cs.meta | 11 ++
5 files changed, 161 insertions(+)
create mode 100644 Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs
create mode 100644 Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta
create mode 100644 Assets/Scripts/Project/Manager/ReconnectMgr.cs
create mode 100644 Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta
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/GameManager.cs b/Assets/Scripts/Project/Manager/GameManager.cs
index 32c6565..51d7e5d 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: