using System.Collections; using System.Collections.Generic; using UniRx.Triggers; using UnityEngine; /// /// 万用表 /// public class Tool_Multimeter : Tool_Base { /// /// 挡位 /// public Multimeter_dangwei dangWei; private TapGesture tapGesture; public GameObject target; public Multimeter_pen currentMultimeter_pen; /// /// 零线 /// public Multimeter_pen blackPen; /// /// 火线 /// public Multimeter_pen redPen; public GameObject tips; private void Start() { tips.SetActive(GameManager.RunModelMgr.SceneType == E_SceneType.Site); tapGesture = GetComponent(); tapGesture.onOneClick += (() => { if (LiveSceneManager.Instance == null) return; tapGesture.OnRay(ref target); if (currentMultimeter_pen == null) { if (target != null && target.name == "档位") { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID($"单击+{target.GetComponent().triggerName}", true) == 0) { dangWei.ChangeDangwei(true); base.CallScoreAction(null, $"单击+{target.GetComponent().triggerName}"); target = null; } } if (target != null && target.GetComponent()) { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID($"单击+{target.GetComponent().triggerName}", true) == 0) { currentMultimeter_pen = target.GetComponent(); currentMultimeter_pen.ResetCurrentLineState(); currentMultimeter_pen.selfColldier.enabled = false; currentMultimeter_pen.currentScrew = null; CheckValue("电压档位"); } } else { target = null; } } else { ///检测线是否是正常 if (target != null && target.transform.parent.GetComponent()) { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(target.GetComponent().triggerName, true) == 0) { TPEMLine t = target.transform.parent.GetComponent(); if (t.isCheckLine) { t.CheckLine(currentMultimeter_pen, target.GetComponent(), (s) => { CheckState(s); }); if (LiveSceneManager.Instance.jiaoYanYi.tPEMLineController.IsCompeleteCheckLine()) { Debug.Log("接线完成"); base.CallScoreAction(null, "万用表通断完成"); } currentMultimeter_pen.currentLine = t; currentMultimeter_pen = null; target = null; } } } else if(target != null && target.GetComponent() != null) { //电笔安装到螺丝上 Tool_Screw ts= target.GetComponent(); if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(ts.curretTriggerName(), true) == 0) { if (currentMultimeter_pen.currentScrew==null) { currentMultimeter_pen.SetLocalLocalPenTran(ts.installPos.localPosition,Vector3.zero, true, target.GetComponent(), false); currentMultimeter_pen.currentScrew = ts; currentMultimeter_pen = null; target = null; CheckState("电压档位"); CheckValue("电压档位"); } } } } }); tapGesture.onDoubleClick += (() => { if (LiveSceneManager.Instance == null) return; if (currentMultimeter_pen != null) { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID($"双击+{currentMultimeter_pen.triggerName}", true) == 0) { currentMultimeter_pen.ResetTran(); currentMultimeter_pen = null; } } else { tapGesture.OnRay(ref target); if (target != null && target.name == "档位") { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID($"双击+{target.GetComponent().triggerName}", true) == 0) { dangWei.ChangeDangwei(false); target = null; } } if (target != null && target.GetComponent()) { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID($"双击+{target.GetComponent().triggerName}", true) == 0) { target.GetComponent().ResetTran(); target = null; } } } }); } private void Update() { if (currentMultimeter_pen != null) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); currentMultimeter_pen.SetPenLocalTran(ray.origin + ray.direction * 0.5f, new Vector3(90, 0, 0), false, null, false); } } /// /// 显示状态逻辑 /// public void CheckState(string things) { //交流电压挡位 if (things == "电压档位" && dangWei.dangweiValue == 2) { Debug.Log("值等于2"); } if (things == "欧姆档位" && dangWei.dangweiValue == 4) //Ω挡位 { Debug.Log("值等于1"); TipPanel.ShowTip("有蜂鸣声!"); } } /// /// 刷新显数 /// /// public void CheckValue(string things) { //交流电压挡位 if (things == "电压档位" && dangWei.dangweiValue == 2) { if(blackPen.currentScrew!=null && redPen.currentScrew!=null) { //打分 var tmpdic=new Dictionary(); tmpdic.Add(blackPen.triggerName, blackPen.currentScrew.triggerName); tmpdic.Add(redPen.triggerName, redPen.currentScrew.triggerName); CallScoreAction(tmpdic, "万用表电压测量"); if(blackPen.currentScrew.hasElectricity && redPen.currentScrew.hasElectricity) { dangWei.SetValue(2,redPen.currentScrew.ElectricityVlaue); return; } } dangWei.SetValue(2, 0); } } }