YanCheng_Metrology/Assets/Scripts/CXX/Devices/计量柜/Device_MeasuringCabinet.cs

111 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using Unity.VisualScripting.Antlr3.Runtime;
using UnityEngine;
/// <summary>
/// 计量柜
/// </summary>
public class Device_MeasuringCabinet : Device_Base
{
/// <summary>
/// 当前机柜中安装的三相四线电能表
/// </summary>
public Device_DirectAccessElectricEnergyMeteringDevice meteringDevice;
/// <summary>
/// 柜门
/// </summary>
public Device_CabinetDoor cabinetDoor;
/// <summary>
/// 插座
/// </summary>
public Device_Socket socket;
/// <summary>
/// 进电开关
/// </summary>
public Device_Switch inSwitch;
/// <summary>
/// 电能表接线
/// </summary>
public List<Tool_Line> jieXian_screws;
private void Awake()
{
//添加开关切换回调
inSwitch.AddAction(isOpen =>
{
//刷新带电状态
CheckHasElectricity();
});
//添加螺丝拆装回调
meteringDevice.jieXian_screws.ForEach(screw =>
{
screw.AddAction(isinstalled =>
{
//刷新带电状态
CheckHasElectricity();
});
});
}
/// <summary>
/// 清空接线的螺丝参数
/// </summary>
public void ClearLineScrew()
{
Debug.Log("清除接线关联的螺丝");
jieXian_screws.ForEach(a =>
{
a.screws.Clear();
});
}
/// <summary>
/// 设置接线的螺丝参数
/// </summary>
public void SetLineScrew()
{
Debug.Log("接线重新关联螺丝");
jieXian_screws.ForEach(a =>
{
a.screws = meteringDevice.jieXian_screws.FindAll(b => b.gameObject.name.StartsWith(a.gameObject.name));
});
}
/// <summary>
/// 刷新电能表螺丝带电状态
/// </summary>
private void CheckHasElectricity()
{
Debug.Log("带电状态刷新");
//进线螺丝是否带电
jieXian_screws.ForEach(a =>
{
if (!inSwitch.isOpen)
{
//开关关闭不带电
a.screws.ForEach(b => b.hasElectricity = false);
}
else
{
//开关打开--线接上--螺丝拧上带电
if (!a.isConnected)
{
a.screws.ForEach(b => b.hasElectricity = false);
}
else
{
a.screws.ForEach(b =>
{
//安装了则带电
b.hasElectricity = b.isInstall;
});
}
}
});
}
}