using System; using System.Collections; using System.Collections.Generic; using System.Text; using DG.Tweening.Core.Easing; using Lylibs; using UnityEngine; using UnityEngine.Playables; using UnityEngine.UI; using ZXK.Framework; using ZXK.UTility; using ZXKFramework; using UIBase = ZXK.Framework.UIBase; /******************************************************************************* *Create By CG *Function 调试运行模式控制 *******************************************************************************/ namespace ZXK.BYSS { public class RunningPanel : UIBase { private List _resultDatas = new List(); //刚进入场景有个提示,此时后面出现蒙版不允许点击其他位置 private GameObject _maskPanel = null; public WebGLDownLoadFile webGLDownLoadFile; // public PracticeAndExamInSceneCtrl v; private void OnEnable() { string hintStr = null; foreach (HintModel.AppHintData item in AppManagement.Instance._HintData._AppHints) { if (item._AppName.Equals(EnumCtrl.GetEnumDescription(AppManagement.Instance._CurType))) { hintStr = item._TrainHints[3]._TrainHint; } } _maskPanel = GetWedage("EnterMask_N"); _maskPanel.gameObject.SetActive(false); //PopUpMng.PopToast("实训任务4", hintStr, "确定", () => //{ //}); //调整相机 if (AppManagement.Instance._CurType == EnumCtrl.Type.ZNYD) { Camera.main.transform.position = new Vector3(-0.34f, 2.08f, 5.8f);//调整相机位置 Vector3 eulerAngles = new Vector3(11.152f, -90.0f, 0f); Quaternion rotation = Quaternion.Euler(eulerAngles); Camera.main.transform.rotation = rotation;//调整相机角度 Camera.main.fieldOfView = 60f;//调整相机FOV } if (AppManagement.Instance._CurType == EnumCtrl.Type.QDCY) { Camera.main.transform.position = new Vector3(6.7f, 1.8f, 11.1f);//调整相机位置 Vector3 eulerAngles = new Vector3(30f, -90.0f, 0f); Quaternion rotation = Quaternion.Euler(eulerAngles); Camera.main.transform.rotation = rotation;//调整相机角度 Camera.main.fieldOfView = 60f;//调整相机FOV } ///充气按钮被点击前的操作,设置最佳视角,设置被点击按钮闪烁 bool IsHave = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //关闭声音组件 _practiceAndExamCtrl._anmCtrl.CloseAudio(); if (IsHave) { //智能运动控制 运行模式特殊操作 if (AppManagement.Instance._CurType == EnumCtrl.Type.ZNYD) { _practiceAndExamCtrl.Set_ZNYD_Running(); } //材料分解 运行模式特殊操作 if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { _practiceAndExamCtrl.Set_CLLFJ_RunningInitViewCameran(); } //搬运输送模式 设备初始视角,UI闪烁 if (AppManagement.Instance._CurType == EnumCtrl.Type.BYSS) { _practiceAndExamCtrl.Set_BYSS_Running(); } } HideBlackMask(); } /// /// 气动冲压模式调用 /// 显示黑色蒙版,然后消失 /// public void QDCY_GetBlackMaskToHide() { GetWedage("BlackMask_N").GetComponent().gameObject.SetActive(true); Invoke("HideBlackMask", 0.2f); } public void Set_xhby_StartText() { GetWedage("RuningTipTxt_N").GetComponent().text = "操作提示:请通过启动、停止按钮,依次观察设备的运作。"; } //黑色蒙版显示 public void HideBlackMask() { GetWedage("BlackMask_N").GetComponent().gameObject.SetActive(false); } private void Start() { webGLDownLoadFile = transform.GetComponent(); //材料分解模式,显示右下角按钮视图 if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { var v = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; if (v != null) { var raw = v.transform.GetComponentInChildren(true); raw.Run(); } } //循环搬运机械手模式,显示右下角按钮视图 if (AppManagement.Instance._CurType == EnumCtrl.Type.XHBY) { var v = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //运行模式特殊设置 v.Set_XHBY_StartBtn_On(); if (v != null) { v._anmCtrl.BallShowInAnm(0); var raw = v.transform.GetComponentInChildren(true); raw.Run(); } } if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam) { GetWedage("OverBtn_N").SetActive(true); } else// if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Train) { GetWedage("OverBtn_N").SetActive(false); } //循环搬运提示设置 if (AppManagement.Instance._CurType == EnumCtrl.Type.XHBY) { GetWedage("RuningTipTxt_N").GetComponent().text = "操作提示:请点击复位按钮使设备回到初始状态。"; } //材料分拣提示设置 if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { GetWedage("RuningTipTxt_N").GetComponent().text = "操作提示:请通过启动、停止、急停和复位按钮、依次观察设备的运作。"; } //气动冲压提示设置 if (AppManagement.Instance._CurType == EnumCtrl.Type.QDCY) { GetWedage("RuningTipTxt_N").GetComponent().text = "操作提示:请通过启动、停止按钮、依次观察设备的运作。"; } //搬运输送 ,提示 if (AppManagement.Instance._CurType == EnumCtrl.Type.BYSS) { GetWedage("RuningTipTxt_N").GetComponent().text = "操作提示:请通过触摸屏将设备切换至全线状态之后点击启动、停止按钮、依次观察设备的运作。"; } //智能运动控制 ,提示 if (AppManagement.Instance._CurType == EnumCtrl.Type.ZNYD) { GetWedage("RuningTipTxt_N").GetComponent().text = "操作提示:请点击触摸屏上启动按钮,停止按钮,依次观察设备的运作。"; } //材料分解模块,内容设置 if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { #region 这一部分是正转,反转操作 GetWedage("RunModel_N").gameObject.SetActive(true); PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; GetWedage("ZhengZhuan_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("FanZhuan_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("ZhengZhuan_N").GetComponent().onValueChanged.AddListener((ist) => { var v = _practiceAndExamCtrl._anmCtrl; v.RunZhengBo(); _practiceAndExamCtrl.OnSetReSet(); _practiceAndExamCtrl.ShowLuoLiaoTa2_3(false); GetWedage("BlackMask_N").GetComponent().gameObject.SetActive(true); Invoke("HideBlackMask", 0.2f); }); GetWedage("FanZhuan_N").GetComponent().onValueChanged.AddListener((ist) => { var v = _practiceAndExamCtrl._anmCtrl; v.RunDaoBo(); _practiceAndExamCtrl.OnSetReSet(); _practiceAndExamCtrl.ShowLuoLiaoTa2_3(true); GetWedage("BlackMask_N").GetComponent().gameObject.SetActive(true); Invoke("HideBlackMask", 0.2f); }); GetWedage("ZhengZhuan_N").GetComponent().isOn = true; GetWedage("FanZhuan_N").GetComponent().isOn = false; var v = _practiceAndExamCtrl._anmCtrl; v.RunZhengBo(); _practiceAndExamCtrl.OnSetReSet(); #endregion } else { GetWedage("RunModel_N").gameObject.SetActive(false); } //声音控制器播放 var practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; if (practiceAndExamCtrl.speakManager != null) { practiceAndExamCtrl.speakManager.PlayAudioCilp(); } //最终成绩数据 AddEventListener("OverBtn_N", UIEventType.OnButtonClick, () => { float curScore = 0; foreach (DataItemModel itemValue in AppManagement.Instance._AppModel .DataJDSBArray[EnumCtrl.GetEnumDescription(AppManagement.Instance._CurType)].Values) { string[] resultItem = new string[4]; for (int i = 0; i < itemValue.Tools.Length; i++) { resultItem[0] = $"{_resultDatas.Count + 1}、{itemValue.Hint}"; resultItem[1] = $"操作记录:{itemValue.RealityTools[0]}"; resultItem[2] = itemValue.RightImg; resultItem[3] = $"标准参考答案:{itemValue.Tools[0]}"; if (itemValue.RealityTools[0].Equals(itemValue.Tools[0])) { curScore += itemValue.Score; } } _resultDatas.Add(resultItem); } SetText("ScoreTxt_N", (curScore + AppManagement.Instance._ConnectScore + AppManagement.Instance._GasScore).ToString()); Debug.Log(curScore+"分数1"); Debug.Log(AppManagement.Instance._ConnectScore + "分数2"); Debug.Log(AppManagement.Instance._GasScore + "分数3"); //报告得分 YiLiao.Main.BaoGaoController.Instance.StartStep(); YiLiao.Main.BaoGaoController.Instance.AddStep(new Step() { name = "设备组装得分", state = "设备组装", maxScore = 20, score = curScore, type = "设备组装" }); YiLiao.Main.BaoGaoController.Instance.AddStep(new Step() { name = "设备接线得分", state = "设备接线", maxScore = 50, score = AppManagement.Instance._ConnectScore, type = "设备接线" }); YiLiao.Main.BaoGaoController.Instance.AddStep(new Step() { name = "设备充气得分", state = "设备充气", maxScore = 30, score = AppManagement.Instance._GasScore, type = "设备充气" }); GetWedage("ScoreUI_N").SetActive(true); }); AddEventListener("LoadWord_N", UIEventType.OnButtonClick, () => { YiLiao.Main.BaoGaoController.Instance.PostBaoGao(); #region //web端,下载功能 LabReprotData labReprotData = new LabReprotData() { }; switch (AppManagement.Instance._CurType) { case EnumCtrl.Type.XHBY: labReprotData.Name_1 = _resultDatas[0][1]; labReprotData.image_1 = _resultDatas[0][2]; labReprotData.Name_2 = _resultDatas[1][1]; labReprotData.image_2 = _resultDatas[1][2]; labReprotData.Name_3 = _resultDatas[2][1]; labReprotData.image_3 = _resultDatas[2][2]; labReprotData.Name_4 = _resultDatas[3][1]; labReprotData.image_4 = _resultDatas[3][2]; labReprotData.Name_5 = _resultDatas[4][1]; labReprotData.image_5 = _resultDatas[4][2]; labReprotData.Name_6 = _resultDatas[5][1]; labReprotData.image_6 = _resultDatas[5][2]; labReprotData.Name_7 = _resultDatas[6][1]; labReprotData.image_7 = _resultDatas[6][2]; labReprotData.Name_8 = _resultDatas[7][1]; labReprotData.image_8 = _resultDatas[7][2]; labReprotData.Name_9 = _resultDatas[8][1]; labReprotData.image_9 = _resultDatas[8][2]; break; case EnumCtrl.Type.QDCY: labReprotData.Name_1 = _resultDatas[0][1]; labReprotData.image_1 = _resultDatas[0][2]; labReprotData.Name_2 = _resultDatas[1][1]; labReprotData.image_2 = _resultDatas[1][2]; labReprotData.Name_3 = _resultDatas[2][1]; labReprotData.image_3 = _resultDatas[2][2]; labReprotData.Name_4 = _resultDatas[3][1]; labReprotData.image_4 = _resultDatas[3][2]; labReprotData.Name_5 = _resultDatas[4][1]; labReprotData.image_5 = _resultDatas[4][2]; break; case EnumCtrl.Type.CLFJ: labReprotData.Name_1 = _resultDatas[0][1]; labReprotData.image_1 = _resultDatas[0][2]; labReprotData.Name_2 = _resultDatas[1][1]; labReprotData.image_2 = _resultDatas[1][2]; labReprotData.Name_3 = _resultDatas[2][1]; labReprotData.image_3 = _resultDatas[2][2]; labReprotData.Name_4 = _resultDatas[3][1]; labReprotData.image_4 = _resultDatas[3][2]; labReprotData.Name_5 = _resultDatas[4][1]; labReprotData.image_5 = _resultDatas[4][2]; labReprotData.Name_6 = _resultDatas[5][1]; labReprotData.image_6 = _resultDatas[5][2]; labReprotData.Name_7 = _resultDatas[6][1]; labReprotData.image_7 = _resultDatas[6][2]; labReprotData.Name_8 = _resultDatas[7][1]; labReprotData.image_8 = _resultDatas[7][2]; break; case EnumCtrl.Type.ZNYD: labReprotData.Name_1 = _resultDatas[0][1]; labReprotData.image_1 = _resultDatas[0][2]; labReprotData.Name_2 = _resultDatas[1][1]; labReprotData.image_2 = _resultDatas[1][2]; labReprotData.Name_3 = _resultDatas[2][1]; labReprotData.image_3 = _resultDatas[2][2]; labReprotData.Name_4 = _resultDatas[3][1]; labReprotData.image_4 = _resultDatas[3][2]; labReprotData.Name_5 = _resultDatas[4][1]; labReprotData.image_5 = _resultDatas[4][2]; labReprotData.Name_6 = _resultDatas[5][1]; labReprotData.image_6 = _resultDatas[5][2]; break; case EnumCtrl.Type.BYSS: labReprotData.Name_1 = _resultDatas[0][1]; labReprotData.image_1 = _resultDatas[0][2]; labReprotData.Name_2 = _resultDatas[1][1]; labReprotData.image_2 = _resultDatas[1][2]; labReprotData.Name_3 = _resultDatas[2][1]; labReprotData.image_3 = _resultDatas[2][2]; labReprotData.Name_4 = _resultDatas[3][1]; labReprotData.image_4 = _resultDatas[3][2]; labReprotData.Name_5 = _resultDatas[4][1]; labReprotData.image_5 = _resultDatas[4][2]; labReprotData.Name_6 = _resultDatas[5][1]; labReprotData.image_6 = _resultDatas[5][2]; labReprotData.Name_7 = _resultDatas[6][1]; labReprotData.image_7 = _resultDatas[6][2]; labReprotData.Name_8 = _resultDatas[7][1]; labReprotData.image_8 = _resultDatas[7][2]; labReprotData.Name_9 = _resultDatas[8][1]; labReprotData.image_9 = _resultDatas[8][2]; labReprotData.Name_10 = _resultDatas[9][1]; labReprotData.image_10 = _resultDatas[9][2]; labReprotData.Name_11 = _resultDatas[10][1]; labReprotData.image_11 = _resultDatas[10][2]; labReprotData.Name_12 = _resultDatas[11][1]; labReprotData.image_12 = _resultDatas[11][2]; labReprotData.Name_13 = _resultDatas[12][1]; labReprotData.image_13 = _resultDatas[12][2]; break; } #endregion #if UNITY_EDITOR || UNITY_STANDALONE string savePath = FolderBrowserHelper.GetPathFromWindowsExplorer(); if (!string.IsNullOrEmpty(savePath)) { GetWedage("ScoreUI_N").SetActive(false); List contains = new List(); for (int i = 0; i < _resultDatas.Count; i++) { for (int j = 0; j < _resultDatas[i].Length; j++) { contains.Add(_resultDatas[i][j]); } } string rec = null; switch (AppManagement.Instance._CurType) { case EnumCtrl.Type.None: break; case EnumCtrl.Type.XHBY: rec = System.IO.Path.Combine(Application.streamingAssetsPath + ConstCtrl.DATA_ResultTemplate_PATH_XHBY); break; case EnumCtrl.Type.QDCY: rec = System.IO.Path.Combine(Application.streamingAssetsPath + ConstCtrl.DATA_ResultTemplate_PATH_QDCY); break; case EnumCtrl.Type.CLFJ: rec = System.IO.Path.Combine(Application.streamingAssetsPath + ConstCtrl.DATA_ResultTemplate_PATH_CLFJ); break; case EnumCtrl.Type.ZNYD: rec = System.IO.Path.Combine(Application.streamingAssetsPath + ConstCtrl.DATA_ResultTemplate_PATH_ZNYD); break; case EnumCtrl.Type.BYSS: rec = System.IO.Path.Combine(Application.streamingAssetsPath + ConstCtrl.DATA_ResultTemplate_PATH_BYSS); break; default: break; } string filePath = System.IO.Path.Combine(savePath, System.IO.Path.GetFileName(rec)); //OfficeMng.InsertParagraphsInWord(rec, filePath, 1, contains.ToArray()); filePath = FileHandle.CheckFile(filePath, true); OfficeMng.InsertParagraphsInWord(rec, filePath, "1、模拟组装", contains.ToArray()); //pc下载word文档 PopUpMng.PopConBox("打开文件", $"文件已经保存在\"{filePath}\",是否直接打开", "打开", () => { FolderBrowserHelper.OpenFolder(filePath); }); } #elif UNITY_WEBGL webGLDownLoadFile.Download(labReprotData); #endif }); AddEventListener("ExitBtn_N", UIEventType.OnButtonClick, () => { GetWedage("ScoreUI_N").SetActive(false); }); } } }