710 lines
30 KiB
C#
710 lines
30 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using ZXK.UTility;
|
||
using Newtonsoft.Json;
|
||
using UnityEngine.Playables;
|
||
using DG.Tweening;
|
||
/*******************************************************************************
|
||
*Create By CG
|
||
*Function 考试管理
|
||
*******************************************************************************/
|
||
namespace ZXK.ZPS
|
||
{
|
||
public class ExamManager : MonoBehaviour
|
||
{
|
||
private DataItemModel _curExamInfo = null;
|
||
public DataItemModel _CurExamInfo { get => _curExamInfo; }
|
||
|
||
private ExamBaseCtrl _curExamBaseCtrl = null;
|
||
[SerializeField]
|
||
private ExamResultScoreCtrl _curScoreCtrl = null;
|
||
|
||
[SerializeField]
|
||
public PlayableDirector _WQBExamDirector = null;
|
||
|
||
|
||
[SerializeField]//凿毛墙面
|
||
private Transform _zaoMaoTrans = null;
|
||
[SerializeField]//搅拌机桶
|
||
private Transform _jiaobanjiTongTrans = null;
|
||
[SerializeField]//旋转短支撑后显示数值
|
||
private TextMesh _rotDuanzhichengTxt = null;
|
||
[SerializeField]//操作说明
|
||
private GameObject _OIGeo = null;
|
||
|
||
public bool _ToolOpenState = false;//判断是否打开工具箱,控制语音文本生成位置
|
||
/// <summary>
|
||
/// 判断是否可以自由控制摄像机,
|
||
/// 如果允许自由切换摄像机,按键后才允许自由切换,否则并没有自由控制
|
||
/// </summary>
|
||
private bool _freeCamera = false;
|
||
|
||
private Transform _curCamera = null;
|
||
private Transform _curCameraParent = null;
|
||
|
||
private Dictionary<string, DataExamModel> _curExamResultData = new Dictionary<string, DataExamModel>();
|
||
|
||
//private string _filePath = null;
|
||
|
||
private void Awake()
|
||
{
|
||
GameRoot.Instance._ExamMng = this;
|
||
}
|
||
private void Start()
|
||
{
|
||
//_filePath = System.IO.Path.Combine(Application.streamingAssetsPath, ConstCtrl.DATA_ExamResult_PATH);
|
||
_OIGeo.SetActive(true);
|
||
_curCamera = Camera.main.transform;
|
||
_curCameraParent = Camera.main.transform.parent;
|
||
FreeCamera(true);
|
||
//CloseProcess();
|
||
}
|
||
private void Update()
|
||
{
|
||
if (_freeCamera)
|
||
{
|
||
if (Input.GetMouseButton(1) || Input.mouseScrollDelta.y != 0 || Input.GetKey(KeyCode.LeftShift)
|
||
|| Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
|
||
{
|
||
_curCameraParent.GetComponent<CameraMyControl>().enabled = _freeCamera;
|
||
_curCamera.GetComponent<Cinemachine.CinemachineBrain>().enabled = !_freeCamera;
|
||
}
|
||
}
|
||
}
|
||
|
||
private void OnDestroy()
|
||
{
|
||
SpeakManager.Instance.StopSpaek();
|
||
}
|
||
#region TimeLine相关
|
||
public void Pause()
|
||
{
|
||
//DOTween.Kill("jiaobanjiTongTrans");//临时建立个位置
|
||
_WQBExamDirector.Pause();
|
||
}
|
||
public void Play()
|
||
{
|
||
_WQBExamDirector.Play();
|
||
}
|
||
public void PlayZaoMao(bool play)
|
||
{
|
||
_zaoMaoTrans.GetComponent<MeshRenderer>().material.SetFloat("_Height", 0.0f);
|
||
_zaoMaoTrans.GetComponent<MeshRenderer>().material.DOFloat(5.0f, "_Height", 2.0f);
|
||
}
|
||
public void JiaobantongRot()
|
||
{
|
||
DOTween.Kill("jiaobanjiTongTrans");
|
||
_jiaobanjiTongTrans.localRotation = Quaternion.Euler(0, 0, 0);
|
||
_jiaobanjiTongTrans.DOLocalRotate(new Vector3(358.0f, 0, 0), 0.1f).SetLoops(-1, LoopType.Incremental).SetId("jiaobanjiTongTrans");
|
||
}
|
||
/// <summary>
|
||
/// 摄像机是否可控,是否处于闲置状态
|
||
/// </summary>
|
||
/// <param name="enter"></param>
|
||
public void FreeCamera(bool free)
|
||
{
|
||
_freeCamera = free;
|
||
if (_freeCamera)
|
||
{//父子结合
|
||
if (_curCamera.parent == _curCameraParent)
|
||
{
|
||
_curCamera.SetParent(null);
|
||
}
|
||
_curCameraParent.position = _curCamera.position;
|
||
_curCameraParent.rotation = Quaternion.Euler(0, _curCamera.rotation.eulerAngles.y, 0);
|
||
_curCamera.SetParent(_curCameraParent);
|
||
}
|
||
else
|
||
{//父子分离
|
||
_curCamera.SetParent(null);
|
||
}
|
||
if (_freeCamera) return;
|
||
_curCameraParent.GetComponent<CameraMyControl>().enabled = free;
|
||
_curCamera.GetComponent<Cinemachine.CinemachineBrain>().enabled = !free;
|
||
}
|
||
/// <summary>
|
||
/// 下一步
|
||
/// </summary>
|
||
public void NextProcess()
|
||
{
|
||
//GameRoot.Instance._DataUICtrl.NextProcess();
|
||
//PopUpMng.PopAlert($"请点击下一个科目{GameRoot.Instance._CurFirstProcess}-{GameRoot.Instance._NextSecondProcess}", 100);
|
||
}
|
||
/// <summary>
|
||
/// 结束当前timeline
|
||
/// </summary>
|
||
public void OverProcessLine()
|
||
{
|
||
_WQBExamDirector.Pause();
|
||
if (GameRoot.Instance._CurType == EnumCtrl.Type.WQB)
|
||
{
|
||
PopUpMng.PopVoiceAlert("恭喜您完成“装配式剪力墙内墙板装配”考核任务", "考核结束", 2, 5);
|
||
}
|
||
else if (GameRoot.Instance._CurType == EnumCtrl.Type.DHB)
|
||
{
|
||
PopUpMng.PopVoiceAlert("恭喜您完成“装配式叠合板装配”考核任务", "考核结束", 2, 5);
|
||
}
|
||
//PopUpMng.PopVoiceAlert("恭喜您完成“装配式剪力墙内墙板装配”考核任务", 5);
|
||
GameRoot.Instance._DataUICtrl.SaveLookData();
|
||
//PopUpMng.PopAlert("", 0);
|
||
//PopUpMng.PopToast("完成任务", "恭喜您完成“装配式剪力墙内墙板装配”考核任务", "返回", OverProcess);
|
||
}
|
||
private void OverProcess()
|
||
{
|
||
GameRoot.Instance.ReturnExit();
|
||
}
|
||
#endregion
|
||
|
||
|
||
public void OpenProcess(DataItemModel dataInfo)
|
||
{
|
||
_curExamInfo = dataInfo;
|
||
_curExamBaseCtrl?.HideSecond();
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(true);
|
||
string contentStr = $"欢迎进入\"{GameRoot.Instance._CurFirstProcess}-{GameRoot.Instance._CurSecondProcess}\"考核,请点击确定开始考核";
|
||
if (GameRoot.Instance._CurType == EnumCtrl.Type.WQB)
|
||
PopUpMng.PopToast("开始考核", contentStr, "确定", EnterShowHintInfo);
|
||
else if (GameRoot.Instance._CurType == EnumCtrl.Type.DHB)
|
||
PopUpMng.PopToast("开始考核", contentStr, "确定", EnterShowDHBHintInfo);
|
||
}
|
||
private void EnterShowHintInfo()
|
||
{
|
||
string[] id = _CurExamInfo.ID.Split('-');
|
||
transform.Find("Type0").gameObject.SetActive(true);
|
||
transform.Find($"Type0/First{id[1]}").gameObject.SetActive(true);
|
||
_curExamBaseCtrl = transform.Find($"Type0/First{id[1]}/Second{id[2]}").GetComponent<ExamBaseCtrl>();
|
||
_curExamBaseCtrl.ShowSecond();
|
||
_WQBExamDirector.Stop();
|
||
switch (id[1])//GameRoot.Instance._CurFirstProcess
|
||
{
|
||
case "0"://操作人员准备
|
||
switch (id[2])
|
||
{
|
||
case "0"://安全防护准备
|
||
_WQBExamDirector.initialTime = 0.1;
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(false);
|
||
break;
|
||
case "1"://操作人员认知90
|
||
_WQBExamDirector.initialTime = 90 / 50.0f;
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(false);
|
||
break;
|
||
}
|
||
break;
|
||
case "1"://构件质量检查
|
||
switch (id[2])
|
||
{
|
||
case "0"://外观质量检查
|
||
_WQBExamDirector.initialTime = 390 / 50.0f;
|
||
break;
|
||
case "1"://预埋件检查
|
||
_WQBExamDirector.initialTime = 760 / 50.0f;
|
||
break;
|
||
case "2"://灌浆孔检查
|
||
_WQBExamDirector.initialTime = 1000 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "2"://测量放线
|
||
switch (id[2])
|
||
{
|
||
case "0"://距离测量
|
||
_WQBExamDirector.initialTime = 1210 / 50.0f;
|
||
break;
|
||
case "1"://标记位置
|
||
_WQBExamDirector.initialTime = 1365 / 50.0f;
|
||
break;
|
||
case "2"://弹线
|
||
_WQBExamDirector.initialTime = 1540 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "3"://吊装准备
|
||
switch (id[2])
|
||
{
|
||
case "0"://连接面处理
|
||
_WQBExamDirector.initialTime = 1740 / 50.0f;
|
||
break;
|
||
case "1"://插筋检查
|
||
_WQBExamDirector.initialTime = 1895 / 50.0f;
|
||
break;
|
||
case "2"://插筋校正
|
||
_WQBExamDirector.initialTime = 1965 / 50.0f;
|
||
break;
|
||
case "3"://插筋核查
|
||
_WQBExamDirector.initialTime = 2020 / 50.0f;
|
||
break;
|
||
case "4"://插筋清理
|
||
_WQBExamDirector.initialTime = 2070 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "4"://标高控制
|
||
Debug.Log(id[2]+"?数字是??");
|
||
|
||
switch (id[2])
|
||
|
||
{
|
||
case "0"://架设仪器
|
||
_WQBExamDirector.initialTime = 2235 / 50.0f;
|
||
|
||
break;
|
||
case "1"://放置后视点
|
||
|
||
_WQBExamDirector.initialTime = 2270/ 50.0f;
|
||
|
||
break;
|
||
case "2"://第一点标高测
|
||
|
||
_WQBExamDirector.initialTime = 2480/ 50.0f;
|
||
|
||
break;
|
||
case "3"://放置垫片1
|
||
_WQBExamDirector.initialTime = 2555/ 50.0f;
|
||
break;
|
||
case "4"://第一点标高校
|
||
_WQBExamDirector.initialTime = 2610/ 50.0f;
|
||
|
||
break;
|
||
case "5"://第二点标高测
|
||
_WQBExamDirector.initialTime = 2678/ 50.0f;
|
||
|
||
break;
|
||
case "6"://放置垫片2
|
||
_WQBExamDirector.initialTime = 2720/ 50.0f;
|
||
|
||
break;
|
||
case "7"://第二点标高校
|
||
_WQBExamDirector.initialTime = 2773/ 50.0f;
|
||
|
||
break;
|
||
case "8"://第三点标高测
|
||
_WQBExamDirector.initialTime = 2825/ 50.0f;
|
||
|
||
break;
|
||
case "9"://放置垫片3
|
||
_WQBExamDirector.initialTime = 2918/ 50.0f;
|
||
|
||
break;
|
||
case "10"://第三点标高校
|
||
_WQBExamDirector.initialTime = 2970/ 50.0f;
|
||
|
||
break;
|
||
case "11"://第四点标高测
|
||
_WQBExamDirector.initialTime = 3035/ 50.0f;
|
||
|
||
break;
|
||
case "12"://放置垫片4
|
||
_WQBExamDirector.initialTime = 3085/ 50.0f;
|
||
|
||
break;
|
||
case "13"://第四点标高校
|
||
_WQBExamDirector.initialTime = 3135/ 50.0f;
|
||
|
||
break;
|
||
}
|
||
break;
|
||
case "5"://接缝处理
|
||
switch (id[2])
|
||
{
|
||
case "0"://安装橡塑棉条
|
||
|
||
_WQBExamDirector.initialTime = 3238 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "6"://支撑准备
|
||
switch (id[2])
|
||
{
|
||
case "0"://长斜支撑准备
|
||
|
||
_WQBExamDirector.initialTime = 3308 / 50.0f;
|
||
break;
|
||
case "1"://短斜支撑准备
|
||
_WQBExamDirector.initialTime = 3343 / 50.0f;
|
||
|
||
break;
|
||
}
|
||
break;
|
||
case "7"://坐浆准备
|
||
switch (id[2])
|
||
{
|
||
case "0"://坐浆料制拌
|
||
|
||
_WQBExamDirector.initialTime = 3405 / 50.0f;
|
||
break;
|
||
case "1"://吊运坐浆料
|
||
|
||
_WQBExamDirector.initialTime = 3570 / 50.0f;
|
||
|
||
break;
|
||
case "2"://坐浆
|
||
|
||
_WQBExamDirector.initialTime = 3961 / 50.0f;
|
||
|
||
break;
|
||
}
|
||
break;
|
||
case "8"://吊装试吊
|
||
switch (id[2])
|
||
{
|
||
case "0"://吊具选型
|
||
|
||
_WQBExamDirector.initialTime = 4140 / 50.0f;
|
||
break;
|
||
case "1"://核对构件信息
|
||
_WQBExamDirector.initialTime = 4215 / 50.0f;
|
||
|
||
break;
|
||
case "2"://挂钩
|
||
_WQBExamDirector.initialTime = 6073 / 50.0f;
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(false);
|
||
break;
|
||
case "3"://试吊起吊
|
||
_WQBExamDirector.initialTime = 6150 / 50.0f;
|
||
|
||
break;
|
||
}
|
||
break;
|
||
case "9"://墙板吊装就位
|
||
switch (id[2])
|
||
{
|
||
case "0"://墙板就位
|
||
|
||
_WQBExamDirector.initialTime = 6810 / 50.0f;
|
||
break;
|
||
case "1"://安装斜支撑
|
||
_WQBExamDirector.initialTime = 7010 / 50.0f;
|
||
|
||
break;
|
||
case "2"://紧固斜支撑
|
||
_WQBExamDirector.initialTime = 7160 / 50.0f;
|
||
|
||
break;
|
||
}
|
||
break;
|
||
case "10"://构件调整
|
||
switch (id[2])
|
||
{
|
||
case "0"://左右 调整
|
||
|
||
_WQBExamDirector.initialTime = 7500 / 50.0f;
|
||
break;
|
||
case "1"://核查前后
|
||
_WQBExamDirector.initialTime = 7600 / 50.0f;
|
||
|
||
break;
|
||
case "2"://前后调整
|
||
_WQBExamDirector.initialTime = 7790 / 50.0f;
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(false);
|
||
break;
|
||
case "3"://垂直度检查
|
||
_WQBExamDirector.initialTime = 7970 / 50.0f;
|
||
break;
|
||
case "4"://平整度检查
|
||
_WQBExamDirector.initialTime = 8090 / 50.0f;
|
||
|
||
break;
|
||
case "5"://紧固斜向支撑
|
||
_WQBExamDirector.initialTime = 8202 / 50.0f;
|
||
|
||
break;
|
||
}
|
||
break;
|
||
case "11"://取钩
|
||
switch (id[2])
|
||
{
|
||
case "0"://取钩
|
||
|
||
_WQBExamDirector.initialTime = 8395 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "12"://分仓封堵
|
||
switch (id[2])
|
||
{
|
||
case "0"://分仓封堵
|
||
_WQBExamDirector.initialTime = 8520 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
_WQBExamDirector.Play();
|
||
//PopUpMng.PopVoiceAlert(_CurExamInfo.VoiceHint, 100);
|
||
//PopUpMng.PopAlert(_CurExamInfo.AnmHint, 100);
|
||
}
|
||
|
||
private void EnterShowDHBHintInfo()
|
||
{
|
||
string[] id = _curExamInfo.ID.Split('-');
|
||
_curExamBaseCtrl = transform.Find($"Type0/First{id[1]}/Second{id[2]}").GetComponent<ExamBaseCtrl>();
|
||
_curExamBaseCtrl.ShowSecond();
|
||
switch (id[1])//GameRoot.Instance._CurFirstProcess
|
||
{
|
||
case "0"://构件质量检查
|
||
switch (id[2])
|
||
{
|
||
case "0"://外观质量检查
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 50 / 50.0f;
|
||
break;
|
||
case "1"://预埋件检查
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 370 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "1"://施工准备
|
||
switch (id[2])
|
||
{
|
||
case "0"://安全防护准备
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 530 / 50.0f;
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(false);
|
||
break;
|
||
case "1"://操作人员认知
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 610 / 50.0f;
|
||
GameRoot.Instance._DataUICtrl.AllowToolSubmin(false);
|
||
break;
|
||
}
|
||
break;
|
||
case "2"://定位放线
|
||
switch (id[2])
|
||
{
|
||
case "0"://构件信息核对
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 900 / 50.0f;
|
||
break;
|
||
case "1"://测量放线
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 2765 / 50.0f;
|
||
break;
|
||
case "2"://标高控制线
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 3095 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "3"://搭设支撑
|
||
switch (id[2])
|
||
{
|
||
case "0"://独立支撑三角撑
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 3705 / 50.0f;
|
||
break;
|
||
case "1"://搭设支撑撑杆
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 3765 / 50.0f;
|
||
break;
|
||
case "2"://安装支撑顶托
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 3835 / 50.0f;
|
||
break;
|
||
case "3"://放置支撑龙骨
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 3925 / 50.0f;
|
||
break;
|
||
case "4"://调整水平
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 4055 / 50.0f;
|
||
break;
|
||
case "5"://放板边线、位置线
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 4420 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "4"://吊装准备
|
||
switch (id[2])
|
||
{
|
||
case "0"://吊具选择
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 4655 / 50.0f;
|
||
break;
|
||
case "1"://连接构件
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 4775 / 50.0f;
|
||
break;
|
||
case "2"://试吊
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 4885 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
case "5"://起吊安装
|
||
switch (id[2])
|
||
{
|
||
case "0"://构件吊装
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 5005 / 50.0f;
|
||
break;
|
||
case "1"://叠合板安装
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 5405 / 50.0f;
|
||
break;
|
||
case "2"://构件调整
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 5520 / 50.0f;
|
||
break;
|
||
case "3"://摘吊钩
|
||
_WQBExamDirector.Stop();
|
||
_WQBExamDirector.initialTime = 5665 / 50.0f;
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
_WQBExamDirector.Play();
|
||
//if (!Camera.main.GetComponent<Cinemachine.CinemachineBrain>().enabled)
|
||
//{
|
||
// Transform targetTranPos = GameObject.Find($"CM ClearShot1/CM vcam{id[1]}{id[2]}0").transform;
|
||
// Debug.Log("目标地址:" + targetTranPos.name);
|
||
// Camera.main.transform.DOMove(targetTranPos.position, 0.5f);
|
||
// Camera.main.transform.DORotate(targetTranPos.rotation.eulerAngles, 0.5f);
|
||
//}
|
||
//PopUpMng.PopVoiceAlert(_curExamInfo.VoiceHint, 100);
|
||
//PopUpMng.PopAlert(_curExamInfo.AnmHint, 100);
|
||
}
|
||
//public void CloseProcess()
|
||
//{
|
||
// for (int i = 0; i < transform.childCount; i++)
|
||
// {
|
||
// for (int j = 0; j < transform.GetChild(i).childCount; j++)
|
||
// {
|
||
// for (int k = 0; k < transform.GetChild(0).GetChild(j).childCount; k++)
|
||
// {
|
||
// transform.GetChild(i).GetChild(j).GetChild(k).gameObject.SetActive(false);//关闭二级工序
|
||
// }
|
||
// transform.GetChild(i).GetChild(j).gameObject.SetActive(false);//关闭一级工序
|
||
// }
|
||
// transform.GetChild(i).gameObject.SetActive(false);//关闭类型
|
||
// }
|
||
//}
|
||
public bool ToolSubmitBtn(List<string> selectTool)
|
||
{
|
||
if (selectTool!=null)
|
||
{
|
||
_curExamBaseCtrl.ToolSubmitBtn(selectTool);
|
||
|
||
}
|
||
return true;
|
||
}
|
||
#region 数据相关操作
|
||
/// <summary>
|
||
/// 从文件读取数据
|
||
/// </summary>
|
||
private Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>> ReadExamResultData()
|
||
{
|
||
//string examReslutStr = TxtFileHandle.ReadAllTxt(_filePath);
|
||
//string examReslutStr = TxtFileHandle.ReadAllTxtByResource(ConstCtrl.DATA_ExamResult_PATH);
|
||
string examReslutStr = TxtFileHandle.ReadAllTxtByPrefs(ConstCtrl.DATA_ExamResult_Key);
|
||
Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>> dataArray = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>>>(examReslutStr);
|
||
if (dataArray == null) dataArray = new Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>>();
|
||
return dataArray;
|
||
}
|
||
/// <summary>
|
||
/// 将数据写入文件
|
||
/// </summary>
|
||
private void WriteExamResultData(Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>> dataArray)
|
||
{
|
||
string examResultStr = JsonConvert.SerializeObject(dataArray);
|
||
//TxtFileHandle.WriteAllTxt(_filePath, examResultStr, true);
|
||
TxtFileHandle.WriteAllTxtByPrefs(ConstCtrl.DATA_ExamResult_Key, examResultStr);
|
||
}
|
||
|
||
public void SaveFirstProExamData()
|
||
{
|
||
if (_curExamResultData.Count <= 0) return;
|
||
//获取现有数据
|
||
Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>> data = ReadExamResultData();
|
||
//整理顺序顺序
|
||
Dictionary<string, DataExamModel> tempExamData = new Dictionary<string, DataExamModel>();
|
||
List<string> tempOrder = GameRoot.Instance._DataUICtrl.GetSecondProcessOrder();
|
||
for (int i = 0; i < tempOrder.Count; i++)
|
||
{
|
||
if (_curExamResultData.ContainsKey(tempOrder[i]))
|
||
{
|
||
tempExamData.Add(tempOrder[i], _curExamResultData[tempOrder[i]]);
|
||
}
|
||
else
|
||
{
|
||
bool include = false;
|
||
if (data.ContainsKey(GameRoot.Instance._CurType.ToString()))
|
||
{//包含当前类
|
||
if (data[GameRoot.Instance._CurType.ToString()].ContainsKey(GameRoot.Instance._CurFirstProcess))
|
||
{//包含第一步
|
||
if (data[GameRoot.Instance._CurType.ToString()][GameRoot.Instance._CurFirstProcess].ContainsKey(tempOrder[i]))
|
||
{//包含第二步
|
||
include = true;
|
||
tempExamData.Add(tempOrder[i], data[GameRoot.Instance._CurType.ToString()][GameRoot.Instance._CurFirstProcess][tempOrder[i]]);
|
||
}
|
||
}
|
||
}
|
||
if (!include)
|
||
{
|
||
//选中了流程,没有操作的操作分为0
|
||
Dictionary<string, Dictionary<string, DataItemModel>> curFirstProcess = new Dictionary<string, Dictionary<string, DataItemModel>>();
|
||
if (GameRoot.Instance._CurType == EnumCtrl.Type.WQB)
|
||
{
|
||
curFirstProcess = GameRoot.Instance.DataWQBArray;
|
||
}
|
||
else if (GameRoot.Instance._CurType == EnumCtrl.Type.DHB)
|
||
{
|
||
curFirstProcess = GameRoot.Instance.DataDHBArray;
|
||
}
|
||
string[] tools = curFirstProcess[GameRoot.Instance._CurFirstProcess.ToString()][tempOrder[i]].Tools;
|
||
DataExamModel examResult = new DataExamModel(tools, null);
|
||
tempExamData.Add(tempOrder[i], examResult);
|
||
Debug.Log("跳过了该操作步骤");
|
||
}
|
||
}
|
||
}
|
||
_curExamResultData = tempExamData;
|
||
|
||
if (data.Count == 0||!data.ContainsKey(GameRoot.Instance._CurType.ToString()))
|
||
{
|
||
data.Add(GameRoot.Instance._CurType.ToString(), new Dictionary<string, Dictionary<string, DataExamModel>>());
|
||
data[GameRoot.Instance._CurType.ToString()].Add(GameRoot.Instance._CurFirstProcess, _curExamResultData);
|
||
}
|
||
else
|
||
{
|
||
if (data[GameRoot.Instance._CurType.ToString()].Count == 0 || !data[GameRoot.Instance._CurType.ToString()].ContainsKey(GameRoot.Instance._CurFirstProcess))
|
||
{
|
||
data[GameRoot.Instance._CurType.ToString()].Add(GameRoot.Instance._CurFirstProcess, _curExamResultData);
|
||
}
|
||
else
|
||
{
|
||
data[GameRoot.Instance._CurType.ToString()].Remove(GameRoot.Instance._CurFirstProcess);
|
||
data[GameRoot.Instance._CurType.ToString()].Add(GameRoot.Instance._CurFirstProcess, _curExamResultData);
|
||
}
|
||
}
|
||
|
||
WriteExamResultData(data);
|
||
_curExamResultData.Clear();
|
||
}
|
||
|
||
public void SaveAllExamData()
|
||
{
|
||
Dictionary<string, Dictionary<string, Dictionary<string, DataExamModel>>> data = ReadExamResultData();
|
||
_curScoreCtrl.ShowBriefScore(data);
|
||
}
|
||
/// <summary>
|
||
/// 将每个第二工序完成的流程存储到临时变量中
|
||
/// </summary>
|
||
/// <param name="useTool"></param>
|
||
public void SetCurExamData(string[] useTool)
|
||
{
|
||
DataExamModel examResult = new DataExamModel(_CurExamInfo.Tools, useTool);
|
||
if (_curExamResultData.ContainsKey(GameRoot.Instance._CurSecondProcess))
|
||
{
|
||
_curExamResultData[GameRoot.Instance._CurSecondProcess] = examResult;
|
||
}
|
||
else
|
||
{
|
||
_curExamResultData.Add(GameRoot.Instance._CurSecondProcess, examResult);
|
||
}
|
||
SaveFirstProExamData();
|
||
}
|
||
#endregion
|
||
}
|
||
} |