修复从现场回到工具间拿取的工具不消失的bug

This commit is contained in:
liuyu 2024-09-05 17:25:37 +08:00
parent 939810213c
commit d38e193431
4 changed files with 759 additions and 54 deletions

View File

@ -72,10 +72,19 @@ public abstract class ScoreBase : MonoBehaviour
}
/// <summary>
/// 设置科目得分,用于断线重连恢复
/// 设置科目得分,用于断线重连恢复 HQB
/// </summary>
public void setCurrentScore(float _score)
{
this.currentScore = _score;
}
/// <summary>
/// 记录现场环境中scoreBase的各项List缓存
/// </summary>
public abstract string SaveSceneBufferList();
/// <summary>
/// 还原现场环境中scoreBase的各项List缓存
/// </summary>
public abstract void LoadSceneBufferList(string sceneInfo);
}

View File

@ -78,7 +78,7 @@ public class TB_UserExamStat
public List<ReconnectTriggerInfo> currentSceneTriggers = new List<ReconnectTriggerInfo>();
/// <summary>
/// 场景内所有缓存信息,不定数据格式
/// 关卡内所有缓存信息,不定数据格式
/// </summary>
public string currentSceneOtherInfo = "";
}

View File

@ -20,6 +20,8 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
private TB_UserExamStat UserExamStat = new TB_UserExamStat();
private string localStatPath = "";
private Coroutine coroutine;//自动保存倒计时
[HideInInspector]
public List<string> experiencedScene = new List<string>();//用户经历过的场景
/// <summary>
/// 初始化函数,记录时间间隔
@ -27,10 +29,14 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
public void Init( )
{
localStatPath = Application.streamingAssetsPath + "/" + localStatFileName;
//if (File.Exists( localStatPath ))//启动后检查有没有之前的遗留
//{
// File.Delete( localStatPath );
//}
experiencedScene.Clear();
}
/// <summary>
/// 用户每经历一个场景就需要保存一个场景的数据
/// </summary>
public void IntoNewScene(string sceneName)
{
}
ReconnectMgr()//构造函数
@ -70,12 +76,20 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
//记录装备材料信息
UserExamStat.allToolAndMaterial.Clear();
UserExamStat.currentSceneTools.Clear();
Dictionary<string, List<ItemInfo>> toolAndMaterialDic = PacksackBagMgr.Instance.GetCurrentBagData();
foreach (var item in toolAndMaterialDic)
{
foreach (var itemInfo in item.Value)
{
UserExamStat.allToolAndMaterial.Add(((ItemInfo)itemInfo).toolName);
ReconnectItemInfo rec = new ReconnectItemInfo();
rec.toolId = itemInfo.toolId;
rec.toolName = itemInfo.toolName;
rec.triggerID = itemInfo.triggerID;
//rec.toolOrDeviceOrMaterial = item.itemInfo.toolOrDeviceOrMaterial;
rec.selfPosInToolRoom = itemInfo.selfPosInToolRoom;
UserExamStat.currentSceneTools.Add(rec);
}
}
@ -92,19 +106,19 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
UserExamStat.sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
//获取场景内(工具间)所有可以装备材料的物品
UserExamStat.currentSceneTools.Clear();
BaseToolOrDevice[] allThings = FindObjectsOfType<BaseToolOrDevice>();
foreach (BaseToolOrDevice item in allThings)
{
//Debug.Log(item.itemInfo.toolName);
ReconnectItemInfo rec = new ReconnectItemInfo();
rec.toolId = item.itemInfo.toolId;
rec.toolName = item.itemInfo.toolName;
rec.triggerID = item.itemInfo.triggerID;
//rec.toolOrDeviceOrMaterial = item.itemInfo.toolOrDeviceOrMaterial;
rec.selfPosInToolRoom = item.itemInfo.selfPosInToolRoom;
UserExamStat.currentSceneTools.Add(rec);
}
//UserExamStat.currentSceneTools.Clear();
//BaseToolOrDevice[] allThings = FindObjectsOfType<BaseToolOrDevice>();
//foreach (BaseToolOrDevice item in allThings)
//{
// //Debug.Log(item.itemInfo.toolName);
// ReconnectItemInfo rec = new ReconnectItemInfo();
// rec.toolId = item.itemInfo.toolId;
// rec.toolName = item.itemInfo.toolName;
// rec.triggerID = item.itemInfo.triggerID;
// //rec.toolOrDeviceOrMaterial = item.itemInfo.toolOrDeviceOrMaterial;
// rec.selfPosInToolRoom = item.itemInfo.selfPosInToolRoom;
// UserExamStat.currentSceneTools.Add(rec);
//}
//获取场景内(现场)所有可以出发的装置
UserExamStat.currentSceneTriggers.Clear();
@ -171,33 +185,43 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
else
GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchScene, GameManager.RunModelMgr.SceneType);
//恢复场景中各项装备
BaseToolOrDevice[] allThings = FindObjectsOfType<BaseToolOrDevice>();
foreach (BaseToolOrDevice item in allThings)
{
item.gameObject.SetActive(false);//先全部隐藏
foreach (ReconnectItemInfo rec in UserExamStat.currentSceneTools)
{
if (item.itemInfo.toolName.Equals(rec.toolName) && item.itemInfo.toolId == rec.toolId)
{
if (item.itemInfo.selfPosInToolRoom.Equals(rec.selfPosInToolRoom))
{
item.gameObject.SetActive(true);
break;
}
}
}
}
//BaseToolOrDevice[] allThings = FindObjectsOfType<BaseToolOrDevice>();
//foreach (BaseToolOrDevice item in allThings)
//{
// item.gameObject.SetActive(false);//先全部隐藏
// foreach (ReconnectItemInfo rec in UserExamStat.currentSceneTools)
// {
// if (item.itemInfo.toolName.Equals(rec.toolName) && item.itemInfo.toolId == rec.toolId)
// {
// if (item.itemInfo.selfPosInToolRoom.Equals(rec.selfPosInToolRoom))
// {
// item.gameObject.SetActive(true);
// break;
// }
// }
// }
//}
//恢复背包中的装备
TooRoomMannger tooRoomMannger = FindAnyObjectByType<TooRoomMannger>();
List<ItemInfo> itemInPack = ToolAndmaterialMgr.Instance.CreateItemInfoByName(UserExamStat.allToolAndMaterial);
foreach (ItemInfo item in itemInPack)
{
for (int j = 0; j < UserExamStat.currentSceneTools.Count; j++)
{
if (item.toolName == UserExamStat.currentSceneTools[j].toolName)
{
item.selfPosInToolRoom = UserExamStat.currentSceneTools[j].selfPosInToolRoom;
UserExamStat.currentSceneTools.RemoveAt(j);
break;
}
}
PacksackBagMgr.Instance.AddOneToolOrMater(item);
}
if ( tooRoomMannger != null )tooRoomMannger.RemoveRepeat();
//恢复已穿戴的装备
List<ItemInfo> itemWear = ToolAndmaterialMgr.Instance.CreateItemInfoByName(UserExamStat.allWear);
TooRoomMannger tooRoomMannger = FindAnyObjectByType<TooRoomMannger>();
foreach (ItemInfo item in itemWear)
{
PacksackBagMgr.Instance.WearItemState(item, true);
@ -288,10 +312,6 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
{
RealtimeStatReader();
RecoverScene();
/*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<int>(Enum_EventType.SwitchSubProcess, UserExamStat.subProcessId);
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);*/
}
}
}

View File

@ -7,13 +7,13 @@
"index": 1,
"subProcessId": 1,
"currentScore": 0.0,
"isDone": true
"isDone": false
},
{
"index": 2,
"subProcessId": 2,
"currentScore": 0.0,
"isDone": true
"isDone": false
},
{
"index": 3,
@ -31,13 +31,13 @@
"index": 5,
"subProcessId": 5,
"currentScore": 0.0,
"isDone": false
"isDone": true
},
{
"index": 6,
"subProcessId": 6,
"currentScore": 0.0,
"isDone": false
"currentScore": 1.99999928,
"isDone": true
},
{
"index": 7,
@ -112,25 +112,701 @@
"isDone": false
}
],
"allToolAndMaterial": [],
"allToolAndMaterial": [
"剥线钳",
"剥线钳",
"验电笔",
"绝缘螺丝刀"
],
"allWear": [],
"sceneName": "03_OfficeScene",
"currentSceneTools": [],
"sceneName": "05_LiveScene",
"currentSceneTools": [
{
"toolId": 5002,
"triggerID": 5002,
"toolName": "剥线钳",
"selfPosInToolRoom": {
"x": -3.1648,
"y": 0.217400074,
"z": -0.189
}
},
{
"toolId": 5002,
"triggerID": 5002,
"toolName": "剥线钳",
"selfPosInToolRoom": {
"x": -3.1648,
"y": 0.217400074,
"z": -0.731
}
},
{
"toolId": 5004,
"triggerID": 5004,
"toolName": "验电笔",
"selfPosInToolRoom": {
"x": -3.21036649,
"y": 1.1167,
"z": -0.173
}
},
{
"toolId": 5003,
"triggerID": 5003,
"toolName": "绝缘螺丝刀",
"selfPosInToolRoom": {
"x": -3.223,
"y": 1.124,
"z": -1.649
}
}
],
"currentSceneTriggers": [
{
"triggerID": 5005,
"triggerName": "手机",
"triggerID": 0,
"triggerName": "空开1",
"selfPosInScene": {
"x": 0.0244421959,
"y": 0.885706842,
"z": -1.00569367
"x": 0.0278625488,
"y": 0.08226776,
"z": -0.008735657
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": "2"
"triggerInfo": "True"
},
{
"triggerID": 5023,
"triggerName": "电能表封印2",
"selfPosInScene": {
"x": 0.0612678528,
"y": 0.0201263428,
"z": -0.109647989
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 180.0
},
"triggerInfo": "False"
},
{
"triggerID": 5023,
"triggerName": "电能表封印1",
"selfPosInScene": {
"x": -0.06092453,
"y": 0.0201263428,
"z": -0.109647989
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 180.0
},
"triggerInfo": "False"
},
{
"triggerID": 5024,
"triggerName": "电能表盖子",
"selfPosInScene": {
"x": -0.000122070313,
"y": -0.0111236572,
"z": -0.09854126
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 180.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "电能表铭牌",
"selfPosInScene": {
"x": -0.069568634,
"y": 0.02281189,
"z": -0.0215929747
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 180.0
},
"triggerInfo": "False"
},
{
"triggerID": 0,
"triggerName": "电能表拆装螺丝2",
"selfPosInScene": {
"x": -0.06737137,
"y": 0.051071167,
"z": -0.109404683
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "电能表拆装螺丝1",
"selfPosInScene": {
"x": 0.06592941,
"y": 0.051071167,
"z": -0.109404683
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 5025,
"triggerName": "电能表盖子固定螺丝2",
"selfPosInScene": {
"x": -0.06129074,
"y": -0.0140533447,
"z": -0.101232052
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 5025,
"triggerName": "电能表盖子固定螺丝1",
"selfPosInScene": {
"x": 0.0612869263,
"y": -0.0140533447,
"z": -0.101232052
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "零_地_螺丝up",
"selfPosInScene": {
"x": -0.0295066833,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "零_out_螺丝up",
"selfPosInScene": {
"x": -0.0381965637,
"y": 0.0222015381,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "B_out_线",
"selfPosInScene": {
"x": 20.0205078,
"y": 142.292862,
"z": 21.0742188
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "C_out_线",
"selfPosInScene": {
"x": 17.5166016,
"y": 142.292862,
"z": 21.0742188
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "C_in_线",
"selfPosInScene": {
"x": 13.3569336,
"y": 131.0804,
"z": 22.4726563
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "B_in_线",
"selfPosInScene": {
"x": 15.9238281,
"y": 131.0804,
"z": 22.4726563
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "A_in_线",
"selfPosInScene": {
"x": 18.47998,
"y": 131.0804,
"z": 22.4726563
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "零_out_线",
"selfPosInScene": {
"x": 16.4960938,
"y": 142.292862,
"z": 21.0742188
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "B_out_螺丝up",
"selfPosInScene": {
"x": 0.006591797,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "C_out_螺丝up",
"selfPosInScene": {
"x": -0.0201148987,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 5021,
"triggerName": "插座",
"selfPosInScene": {
"x": -1.56,
"y": 2.29342651,
"z": -0.203244925
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 180.0
},
"triggerInfo": "True"
},
{
"triggerID": 0,
"triggerName": "B_in_螺丝down",
"selfPosInScene": {
"x": 0.0237312317,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "A_in_螺丝up",
"selfPosInScene": {
"x": 0.0501709,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 5018,
"triggerName": "NPC客户",
"selfPosInScene": {
"x": -170.37,
"y": 1.26,
"z": -57.03
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "A_out_线",
"selfPosInScene": {
"x": 22.70166,
"y": 142.292862,
"z": 21.0742188
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "检查接线",
"selfPosInScene": {
"x": 0.14606,
"y": -0.15198,
"z": 0.40884
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": "False"
},
{
"triggerID": 0,
"triggerName": "C_in_螺丝up",
"selfPosInScene": {
"x": -0.002609253,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "B_out_螺丝down",
"selfPosInScene": {
"x": 0.006591797,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "零_地_螺丝down",
"selfPosInScene": {
"x": -0.0295066833,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 5020,
"triggerName": "NPC负责人",
"selfPosInScene": {
"x": -170.376083,
"y": 1.26,
"z": -53.5962639
},
"selfRotInScene": {
"x": 0.0,
"y": 125.039986,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "C_out_螺丝down",
"selfPosInScene": {
"x": -0.0201148987,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "零_地_线",
"selfPosInScene": {
"x": -5.22167969,
"y": 140.3523,
"z": 18.2167969
},
"selfRotInScene": {
"x": 8.14222E-13,
"y": 2.035555E-13,
"z": 4.85314136E-20
},
"triggerInfo": ""
},
{
"triggerID": 5022,
"triggerName": "柜门",
"selfPosInScene": {
"x": 0.491622925,
"y": -0.5744629,
"z": 0.47206974
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": "{\"isOpen\":false,\"hasElectricity\":false}"
},
{
"triggerID": 0,
"triggerName": "",
"selfPosInScene": {
"x": 0.146900177,
"y": -0.179336548,
"z": 0.5191498
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 180.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "in开关_螺丝2",
"selfPosInScene": {
"x": 0.0108642578,
"y": -0.07393646,
"z": 0.03310418
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "in开关_螺丝3",
"selfPosInScene": {
"x": 0.0108642578,
"y": -0.09108353,
"z": 0.0330979824
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "零_out_螺丝down",
"selfPosInScene": {
"x": -0.0381965637,
"y": 0.0222015381,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "B_in_螺丝up",
"selfPosInScene": {
"x": 0.0237312317,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 5021,
"triggerName": "空开2",
"selfPosInScene": {
"x": 0.0278625488,
"y": -0.06511688,
"z": -0.008735657
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": "True"
},
{
"triggerID": 0,
"triggerName": "C_in_螺丝down",
"selfPosInScene": {
"x": -0.002609253,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "in开关_螺丝1",
"selfPosInScene": {
"x": 0.0108642578,
"y": -0.05678177,
"z": 0.0330979824
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "A_out_螺丝down",
"selfPosInScene": {
"x": 0.03305435,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "A_in_螺丝down",
"selfPosInScene": {
"x": 0.0501709,
"y": 0.0256958,
"z": -0.101950169
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
},
{
"triggerID": 0,
"triggerName": "A_out_螺丝up",
"selfPosInScene": {
"x": 0.03305435,
"y": 0.0256958,
"z": -0.09305191
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": ""
}
],
"currentSceneOtherInfo": "{\r\n \"TestPen3list\": [],\r\n \"InSwitchCloseYDList\": [],\r\n \"InSwitchOpenYDList\": [],\r\n \"currentunInstallJieXian\": [],\r\n \"currentInstallJieXian\": [],\r\n \"installCover\": [],\r\n \"currentInstallTestJieXian\": []\r\n}"