Browse Source

【工具库调整+练习模式关闭工具备品阶段esc关闭功能
线性考核模式+备品阶段强制选择】

CHIVA\bj 8 months ago
parent
commit
df07b732dd

+ 164 - 137
Framework/SimulationToolDev/CVR_Interactable/Example/Scripts/OperationData-Example/OPTrigger_SelectToolElemet.cs

@@ -1,62 +1,63 @@
-using ChivaXR.Op;
-using ChivaXR.VR;
-using QFramework;
-using Sirenix.OdinInspector;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class OPTrigger_SelectToolElemet : OperationData_TriggerMode
-{
-    [LabelText("需要选择的工具组")]
-    [ValueDropdown("GetToolNames", DropdownTitle = "需要选择的工具组")]
-    public List<string> choseToolNames = new List<string>();
-
-    ToolConfigProxy m_ToolConfigProxy;
-
-    [Button("搜索场景内使用到的工具")]
-    public void SearchTools()
-    {
-        OpTrigger_ToolPack[] tmpToolPacks = FindObjectsOfType<OpTrigger_ToolPack>();
-
-        choseToolNames.Clear();
-
-        foreach (var toolPackItem in tmpToolPacks)
-        {
-            if (toolPackItem.useTool)
-            {
-                foreach (var toolName in toolPackItem.choseToolNames)
-                {
-                    if (!choseToolNames.Contains(toolName))
-                    {
-                        choseToolNames.Add(toolName);
-                    }
-                }
-            }
-        }
-    }
-
-
-    private bool isFinish;
-
-    public override void SetDataStateValue(float value)
-    {
-
-    }
-
-    protected override void OnOperationDataStatusChanged(OperationDataStatus status)
-    {
-        base.OnOperationDataStatusChanged(status);
-
-        switch (status)
-        {
-            case OperationDataStatus.InActive:
-
-
-                break;
-            case OperationDataStatus.Listening:
-
-                if (UIKit.GetPanel<ToolLibraryForm>() == null)
+using ChivaXR;
+using ChivaXR.Op;
+using ChivaXR.VR;
+using QFramework;
+using Sirenix.OdinInspector;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class OPTrigger_SelectToolElemet : OperationData_TriggerMode
+{
+    [LabelText("需要选择的工具组")]
+    [ValueDropdown("GetToolNames", DropdownTitle = "需要选择的工具组")]
+    public List<string> choseToolNames = new List<string>();
+
+    ToolConfigProxy m_ToolConfigProxy;
+
+    [Button("搜索场景内使用到的工具")]
+    public void SearchTools()
+    {
+        OpTrigger_ToolPack[] tmpToolPacks = FindObjectsOfType<OpTrigger_ToolPack>();
+
+        choseToolNames.Clear();
+
+        foreach (var toolPackItem in tmpToolPacks)
+        {
+            if (toolPackItem.useTool)
+            {
+                foreach (var toolName in toolPackItem.choseToolNames)
+                {
+                    if (!choseToolNames.Contains(toolName))
+                    {
+                        choseToolNames.Add(toolName);
+                    }
+                }
+            }
+        }
+    }
+
+
+    private bool isFinish;
+
+    public override void SetDataStateValue(float value)
+    {
+
+    }
+
+    protected override void OnOperationDataStatusChanged(OperationDataStatus status)
+    {
+        base.OnOperationDataStatusChanged(status);
+
+        switch (status)
+        {
+            case OperationDataStatus.InActive:
+
+
+                break;
+            case OperationDataStatus.Listening:
+
+                if (UIKit.GetPanel<ToolLibraryForm>() == null)
                 {
                     if (OperateSetting.Instance.m_CurrentOperationMode != OperationMode.Learn)
                     {
@@ -64,82 +65,108 @@ public class OPTrigger_SelectToolElemet : OperationData_TriggerMode
                         {
                             toolLibraryType = ToolLibraryType.ToolRoom,
                             selectAction = Check,
-                            rightTools = choseToolNames
+                            rightTools = choseToolNames,
+                            lockEsc = true,
                         });
-                    }
-
-                }
-                //UIKit.OpenPanel<ToolLibraryForm>(new ToolLibraryFormData()
-                //{
-                //    toolLibraryType = ToolLibraryType.ToolRoom,
-                //    selectAction = Check,
-                //    rightTools = choseToolNames
-                //});
-                OperateSetting.Instance.m_CurrentStepRightToolNames = choseToolNames;
-                break;
-        }
-
-
-    }
-
-    public override bool TriggerCondition()
-    {
-        if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Learn)
-        {
-            return true;
-        }
-
-        if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.FreeParctice
-            || OperateSetting.Instance.m_CurrentOperationMode == OperationMode.FreeExam)
-        {
-            return true;
-        }
-
-        return isFinish;
-    }
-
-    private IEnumerable GetToolNames()
-    {
-        ToolConfigProxy toolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
-
-        List<string> tmpToolNames = toolConfigProxy.GetAllToolCofigInfoName();
-
-        if (tmpToolNames == null || tmpToolNames.Count == 0)
-        {
-            Debug.LogError("请检查表格配置文件!!!");
-        }
-
-        return tmpToolNames;
-    }
-
-    private void Check()
-    {
-        m_ToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
-
-        if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Practice)
-        {
-            List<ToolConfigInfo> tmpToolConfigInfos = m_ToolConfigProxy.GetAllToolConfigInfoFromCTRSTCIs();
-
-            if (tmpToolConfigInfos.Count != choseToolNames.Count)
-            {
-                return;
-            }
-            else
-            {
-                foreach (var toolName in choseToolNames)
-                {
-                    if (tmpToolConfigInfos.Find(t => t.toolName == toolName) == null)
-                    {
-                        isFinish = false;
-                        return;
-                    }
-                }
-
-            }
-        }
-
-        isFinish = true;
-
-        UIKit.ClosePanel<ToolLibraryForm>();
-    }
-}
+                    }
+
+                }
+                //UIKit.OpenPanel<ToolLibraryForm>(new ToolLibraryFormData()
+                //{
+                //    toolLibraryType = ToolLibraryType.ToolRoom,
+                //    selectAction = Check,
+                //    rightTools = choseToolNames
+                //});
+                OperateSetting.Instance.m_CurrentStepRightToolNames = choseToolNames;
+                break;
+        }
+
+
+    }
+
+    public override bool TriggerCondition()
+    {
+        if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Learn)
+        {
+            return true;
+        }
+
+        if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.FreeParctice
+            || OperateSetting.Instance.m_CurrentOperationMode == OperationMode.FreeExam)
+        {
+            return true;
+        }
+
+        return isFinish;
+    }
+
+    private IEnumerable GetToolNames()
+    {
+        ToolConfigProxy toolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
+
+        List<string> tmpToolNames = toolConfigProxy.GetAllToolCofigInfoName();
+
+        if (tmpToolNames == null || tmpToolNames.Count == 0)
+        {
+            Debug.LogError("请检查表格配置文件!!!");
+        }
+
+        return tmpToolNames;
+    }
+
+    private void Check()
+    {
+        m_ToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
+
+        if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Practice)
+        {
+            List<ToolConfigInfo> tmpToolConfigInfos = m_ToolConfigProxy.GetAllToolConfigInfoFromCTRSTCIs();
+
+            if (tmpToolConfigInfos.Count != choseToolNames.Count)
+            {
+                return;
+            }
+            else
+            {
+                foreach (var toolName in choseToolNames)
+                {
+                    if (tmpToolConfigInfos.Find(t => t.toolName == toolName) == null)
+                    {
+                        isFinish = false;
+                        return;
+                    }
+                }
+
+            }
+        }
+        else if (OperateSetting.Instance.m_CurrentOperationMode == OperationMode.Exam)
+        {
+            List<ToolConfigInfo> tmpToolConfigInfos = m_ToolConfigProxy.GetAllToolConfigInfoFromCTRSTCIs();
+
+            if (tmpToolConfigInfos.Count != choseToolNames.Count)
+            {
+                OperateSetting.Instance.ToolPackUILogic.SetHint(true);
+                ExamManagerForPC.instance.RecordFault(ProcessManagement.Instance.currentStepID, ErrorReason.SelectWrongTarget);
+                return;
+            }
+            else
+            {
+                foreach (var toolName in choseToolNames)
+                {
+                    if (tmpToolConfigInfos.Find(t => t.toolName == toolName) == null)
+                    {
+                        OperateSetting.Instance.ToolPackUILogic.SetHint(true);
+                        ExamManagerForPC.instance.RecordFault(ProcessManagement.Instance.currentStepID, ErrorReason.SelectWrongTarget);
+                        isFinish = false;
+                        return;
+                    }
+                }
+            }
+        }
+
+        isFinish = true;
+        OperateSetting.Instance.ToolPackUILogic.SetHint(false);
+
+        UIKit.ClosePanel<ToolLibraryForm>();
+    }
+}

+ 6 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel.cs

@@ -144,7 +144,7 @@ namespace QFramework
                     TitleTextLayoutGroup.gameObject.SetActive(false);
                     OperateStep.HelpBtn.gameObject.SetActive(false);
                     OperateStep.AutoPlayBtn.gameObject.SetActive(false);
-                    OperateStep.ToolLibraryBtn.gameObject.SetActive(false);
+                    OperateStep.ToolLibraryBtn.gameObject.SetActive(true);
                     OperateStep.ToolBackPackBtn.gameObject.SetActive(true);
                     OperateStep.EndExam.gameObject.SetActive(true);
                     OperateStep.SubtitleBg.gameObject.SetActive(false);
@@ -241,6 +241,11 @@ namespace QFramework
         {
             TitleTextLayoutGroup.gameObject.SetActive(true);
 
+            //练习模式开启提示功能
+            if(OperateSetting.Instance.m_CurrentOperationMode==OperationMode.Practice)
+            {
+                OperateStep.OnHelpBtnClick();
+            }
             OperateStep.StartOperation();
         }
 

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep.cs

@@ -117,7 +117,7 @@ namespace QFramework
             RoamCameraController.Instance.SetCameraMoveState(false);
         }
 
-        private void OnHelpBtnClick()
+        public void OnHelpBtnClick()
         {
             if (!OperateSetting.Instance.ToolPackUILogic.GetHint())
             {

+ 9 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm.cs

@@ -35,6 +35,11 @@ namespace QFramework
         /// 这是为ToolLibrarySelectElement单加的模式
         /// </summary>
         public List<string> rightTools = new List<string>();
+
+        /// <summary>
+        /// 是否锁定esc关闭功能
+        /// </summary>
+        public bool lockEsc=false;
     }
     public partial class ToolLibraryForm : UIPanel
     {
@@ -45,6 +50,7 @@ namespace QFramework
         //工具间中用到
         public List<string> rightToolsForToolRoom = new List<string>();
 
+        public bool isLockESC = false;
         protected override void OnInit(IUIData uiData = null)
         {
             mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData();
@@ -62,6 +68,8 @@ namespace QFramework
             CloseBtn.gameObject.SetActive(mData.selectAction == null);
 
             rightToolsForToolRoom = mData.rightTools;
+
+            isLockESC = mData.lockEsc;
         }
 
         protected override void OnOpen(IUIData uiData = null)
@@ -111,7 +119,7 @@ namespace QFramework
 
         void Update()
         {
-            if (Input.GetKeyDown(KeyCode.Escape))
+            if (Input.GetKeyDown(KeyCode.Escape)&&!isLockESC)
             {
                 OnCloseBtnClick();
             }