소스 검색

【+】添加OPTrigger_SelectToolElemet 工器具选择界面

lxd 5 달 전
부모
커밋
76ee3b9ed9

+ 102 - 0
Framework/SimulationToolDev/CVR_Interactable/Example/Scripts/OperationData-Example/OPTrigger_SelectToolElemet.cs

@@ -0,0 +1,102 @@
+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;
+
+    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)
+                {
+                    UIKit.OpenPanel<ToolLibraryForm>(new ToolLibraryFormData()
+                    {
+                        toolLibraryType = ToolLibraryType.ToolRoom,
+                        selectAction = Check
+                    });
+                }
+
+                break;
+        }
+
+
+    }
+
+    public override bool TriggerCondition()
+    {
+       
+
+        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>();
+    }
+}

+ 11 - 0
Framework/SimulationToolDev/CVR_Interactable/Example/Scripts/OperationData-Example/OPTrigger_SelectToolElemet.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2430a9104af4d124c90baf8d1d300a02
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 2
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel.cs

@@ -131,7 +131,7 @@ namespace QFramework
                     operateName = "操作步骤";
                     OperateStep.HelpBtn.gameObject.SetActive(true);
                     OperateStep.AutoPlayBtn.gameObject.SetActive(false);
-                    OperateStep.ToolLibraryBtn.gameObject.SetActive(true);
+                    OperateStep.ToolLibraryBtn.gameObject.SetActive(false);
                     OperateStep.ToolBackPackBtn.gameObject.SetActive(true);
                     OperateStep.EndExam.gameObject.SetActive(false);
                     break;
@@ -140,7 +140,7 @@ namespace QFramework
                     TitleTextLayoutGroup.gameObject.SetActive(false);
                     OperateStep.HelpBtn.gameObject.SetActive(false);
                     OperateStep.AutoPlayBtn.gameObject.SetActive(false);
-                    OperateStep.ToolLibraryBtn.gameObject.SetActive(true);
+                    OperateStep.ToolLibraryBtn.gameObject.SetActive(false);
                     OperateStep.ToolBackPackBtn.gameObject.SetActive(true);
                     OperateStep.EndExam.gameObject.SetActive(true);
                     OperateStep.SubtitleBg.gameObject.SetActive(false);

+ 18 - 3
OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm.cs

@@ -3,6 +3,7 @@ using UnityEngine.UI;
 using QFramework;
 using System.Collections.Generic;
 using I2.Loc;
+using System;
 
 namespace QFramework
 {
@@ -24,6 +25,11 @@ namespace QFramework
         /// 开启的工具库类型
         /// </summary>
         public ToolLibraryType toolLibraryType = ToolLibraryType.ToolRoom;
+
+        /// <summary>
+        /// 正常情况下不用使用该回调,这是为ToolLibrarySelectElement单加的模式
+        /// </summary>
+        public Action selectAction;
     }
     public partial class ToolLibraryForm : UIPanel
     {
@@ -44,6 +50,10 @@ namespace QFramework
             ToolLibrarySelectElement.TitleText.text = ScriptLocalization.tooltype.all;
 
             m_ToolConfigProxy.m_CurrentToolLibraryType = mData.toolLibraryType;
+
+            CloseBtn.gameObject.SetActive(mData.selectAction == null);
+
+           
         }
 
         protected override void OnOpen(IUIData uiData = null)
@@ -159,8 +169,6 @@ namespace QFramework
 
                     m_ToolConfigProxy.SetCurrrentToolRoomToolConfigInfos(m_ToolConfigProxy.m_TmpToolRoomConfigInfos);
 
-                    UIKit.ClosePanel<ToolLibraryForm>();
-
                     break;
                 case ToolLibraryType.ToolKit:
 
@@ -192,7 +200,14 @@ namespace QFramework
             OperateSetting.Instance.m_ToolKitToolConfigs = tmpToolConfigs;
 
             UIKit.OpenPanel<ToolDisplayForm>(new ToolDisplayFormData() { m_ToolConfigs = tmpToolConfigs });
-            UIKit.ClosePanel<ToolLibraryForm>();
+
+            if (mData.selectAction != null)
+            {
+                mData.selectAction?.Invoke();
+            }else
+            {
+                UIKit.ClosePanel<ToolLibraryForm>();
+            }
         }
 
         public void RefrushAllChoseTool()

+ 3 - 3
OperationUIFrame/OperationUIFrameV2/UIPrefabs/PC_OperatePanel.prefab

@@ -4585,7 +4585,7 @@ RectTransform:
   - {fileID: 8606074286178054783}
   - {fileID: 6525219100594397421}
   m_Father: {fileID: 3996751866356890438}
-  m_RootOrder: 3
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -14526,8 +14526,8 @@ RectTransform:
   m_Children:
   - {fileID: 1015133840648486069}
   - {fileID: 3577774132439171834}
-  - {fileID: 4056381284791150215}
   - {fileID: 5270166560972114613}
+  - {fileID: 4056381284791150215}
   - {fileID: 7746784864264408786}
   - {fileID: 8028946224031322923}
   m_Father: {fileID: 4919306754663186500}
@@ -17670,7 +17670,7 @@ RectTransform:
   - {fileID: 397093932542958240}
   - {fileID: 5154205227774001951}
   m_Father: {fileID: 3996751866356890438}
-  m_RootOrder: 2
+  m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}