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