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);
}
}
}