using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class LineManager : MonoBehaviour
{
public static LineManager instance;
public Transform point1;
public Transform point2;
public GameObject Tips;
public TextMeshProUGUI TipTexts;
private void Awake()
{
instance = this;
}
void Start()
{
//// 测试连接
//TestConnection(InterfaceType.IN1, InterfaceType.OUT1); // 应该正确
//TestConnection(InterfaceType.IN1, InterfaceType.GND); // 应该错误
//TestConnection(InterfaceType.正12V, InterfaceType.GND); // 应该正确
//TestConnection(InterfaceType._1uF_star, InterfaceType._1uF_end); // 应该正确
}
void Update()
{
if (Input.GetMouseButtonDown(2))
{
point1 = null;
point2 = null;
}
}
///
/// 鼠标点击的物体
///
///
public void ClickPoint(Transform point)
{
if (point1 != null)
{
point2 = point;
}
if (point1 == null)
{
point1 = point;
}
if (point1 != null && point2 != null)
{
StartCoroutine(Checkconnection(point1, point2));
}
}
IEnumerator Checkconnection(Transform transform, Transform transform2)
{
LineConnect line = transform.GetComponent();
LineConnect line2 = transform2.GetComponent();
if (line != null && line2 != null)
{
if (!JudgmentLine(line, line2))
{
Tips.SetActive(true);
yield return new WaitForSeconds(2);
Tips.SetActive(false);
}
}
}
public bool JudgmentLine(LineConnect line1, LineConnect line2)
{
Init();
if (line1.interfaceType == InterfaceType.负12V && line2.interfaceType != InterfaceType.负12V ||
line2.interfaceType == InterfaceType.负12V && line1.interfaceType != InterfaceType.负12V)
{
TipTexts.text = "连接错误,-12V应该与-12V相连!";
//WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.正12V && line2.interfaceType != InterfaceType.正12V
|| line2.interfaceType == InterfaceType.正12V && line1.interfaceType != InterfaceType.正12V
)
{
TipTexts.text = "连接错误,12V应该与12V相连!";
//WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.零V && line2.interfaceType != InterfaceType.GND
|| line2.interfaceType == InterfaceType.GND && line1.interfaceType != InterfaceType.零V)
{
TipTexts.text = "连接错误,0V应该与GND相连!";
// WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.IN2_200K && line2.interfaceType != InterfaceType.OUT1
|| line2.interfaceType == InterfaceType.IN2_200K && line1.interfaceType != InterfaceType.OUT1)
{
TipTexts.text = "连接错误,200K应该与OUT1相连!";
//WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.OUT1 && line2.interfaceType != InterfaceType.IN4
|| line2.interfaceType == InterfaceType.OUT1 && line1.interfaceType != InterfaceType.IN4)
{
TipTexts.text = "连接错误,OUT1应该与IN4相连!";
// WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.AD1 && line2.interfaceType != InterfaceType.OUT2
|| line2.interfaceType == InterfaceType.AD1 && line1.interfaceType != InterfaceType.OUT2)
{
TipTexts.text = "连接错误,200K应该与OUT1相连!";
//WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.零V && line2.interfaceType != InterfaceType.GND
|| line2.interfaceType == InterfaceType.GND && line1.interfaceType != InterfaceType.零V)
{
TipTexts.text = "连接错误,0V应该与GND相连!";
//WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.OUT && line2.interfaceType != InterfaceType.IN1
|| line2.interfaceType == InterfaceType.OUT && line1.interfaceType != InterfaceType.IN1)
{
TipTexts.text = "连接错误,OUT应该与IN1相连!";
// WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if (line1.interfaceType == InterfaceType.AD2 && line2.interfaceType != InterfaceType.IN1
|| line2.interfaceType == InterfaceType.AD2 && line1.interfaceType != InterfaceType.IN1)
{
TipTexts.text = "连接错误,OUT应该与IN1相连!";
// WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else if ((line1.interfaceType != InterfaceType.AD2 || line1.interfaceType != InterfaceType.OUT || line1.interfaceType != InterfaceType.零V
|| line1.interfaceType != InterfaceType.AD1 || line1.interfaceType != InterfaceType.OUT1 || line1.interfaceType != InterfaceType.IN2_200K ||
line1.interfaceType != InterfaceType.正12V || line1.interfaceType != InterfaceType.负12V) && (line2.interfaceType != InterfaceType.AD2 || line2.interfaceType != InterfaceType.OUT || line2.interfaceType != InterfaceType.零V
|| line2.interfaceType != InterfaceType.AD1 || line2.interfaceType != InterfaceType.OUT1 || line2.interfaceType != InterfaceType.IN2_200K ||
line2.interfaceType != InterfaceType.正12V || line2.interfaceType != InterfaceType.负12V))
{
TipTexts.text = "连接错误,不需要此连线";
// WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
WireDrawingSystem.instance.HandleDelete();
WireDrawingSystem.instance.ClearSnapPreview();
return false;
}
else
{
return true;
}
}
public void Init()
{
point2 = null;
point1 = null;
}
}