179 lines
7.6 KiB
C#
179 lines
7.6 KiB
C#
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;
|
||
public List<GameObject> Models = new List<GameObject>();
|
||
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;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 鼠标点击的物体
|
||
/// </summary>
|
||
/// <param name="point"></param>
|
||
public void ClickPoint(Transform point)
|
||
{
|
||
if (point1 != null)
|
||
{
|
||
point2 = point;
|
||
}
|
||
if (point1 == null)
|
||
{
|
||
point1 = point;
|
||
}
|
||
if (point1 != null && point2 != null)
|
||
{
|
||
//StartCoroutine(Checkconnection(point1, point2));
|
||
}
|
||
}
|
||
|
||
|
||
public IEnumerator Checkconnection(Transform transform, Transform transform2)
|
||
{
|
||
|
||
LineConnect line = transform.GetComponent<LineConnect>();
|
||
LineConnect line2 = transform2.GetComponent<LineConnect>();
|
||
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相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if (line1.interfaceType == InterfaceType.正12V && line2.interfaceType != InterfaceType.正12V
|
||
|| line2.interfaceType == InterfaceType.正12V && line1.interfaceType != InterfaceType.正12V
|
||
)
|
||
{
|
||
TipTexts.text = "连接错误,12V应该与12V相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
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();
|
||
// LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
// 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相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if (line1.interfaceType == InterfaceType.OUT1 && (line2.interfaceType != InterfaceType.IN4&& line2.interfaceType !=InterfaceType.IN2_200K)
|
||
|| line2.interfaceType == InterfaceType.OUT1 && line1.interfaceType != InterfaceType.IN4)
|
||
{
|
||
TipTexts.text = "连接错误,OUT1应该与IN4相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if (line1.interfaceType == InterfaceType.AD1 && line2.interfaceType != InterfaceType.OUT2
|
||
|| line2.interfaceType == InterfaceType.AD1 && line1.interfaceType != InterfaceType.OUT2)
|
||
{
|
||
TipTexts.text = "连接错误,AD1应该与OUT2相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if ((line1.interfaceType == InterfaceType.零V && (line2.interfaceType != InterfaceType.GND&& line2.interfaceType != InterfaceType.III)
|
||
|| line2.interfaceType == InterfaceType.GND && line1.interfaceType != InterfaceType.零V)
|
||
)
|
||
{
|
||
TipTexts.text = "连接错误,0V应该与GND相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if (line1.interfaceType == InterfaceType.OUT && line2.interfaceType != InterfaceType.IN1
|
||
|| line2.interfaceType == InterfaceType.OUT && line1.interfaceType != InterfaceType.IN1)
|
||
{
|
||
TipTexts.text = "连接错误,OUT应该与IN1相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if (line1.interfaceType == InterfaceType.AD2 && line2.interfaceType != InterfaceType.IN1
|
||
|| line2.interfaceType == InterfaceType.AD2 && line1.interfaceType != InterfaceType.IN1)
|
||
{
|
||
TipTexts.text = "连接错误,AD2应该与IN1相连!";
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else if ((line1.interfaceType != InterfaceType.AD2 && line1.interfaceType != InterfaceType.OUT && line1.interfaceType != InterfaceType.零V
|
||
&& line1.interfaceType != InterfaceType.AD1 && line1.interfaceType != InterfaceType.OUT2 && 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 && line2.interfaceType != InterfaceType.OUT2))
|
||
{
|
||
TipTexts.text = "连接错误,不需要此连线";
|
||
// WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle;
|
||
//WireDrawingSystem.instance.HandleDelete();
|
||
//WireDrawingSystem.instance.ClearSnapPreview();
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return false;
|
||
}
|
||
else
|
||
{
|
||
for (int i = 0; i < Models.Count; i++)
|
||
{
|
||
string[] splitname = Models[i].name.Split('连');
|
||
if (splitname[0] == line1.interfaceType.ToString() && splitname[1] == line2.interfaceType.ToString() ||
|
||
splitname[0] == line2.interfaceType.ToString() && splitname[1] == line1.interfaceType.ToString())
|
||
{
|
||
Models[i].SetActive(true);
|
||
}
|
||
|
||
}
|
||
LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject);
|
||
return true;
|
||
}
|
||
}
|
||
public void Init()
|
||
{
|
||
point2 = null;
|
||
point1 = null;
|
||
}
|
||
}
|