using DG.Tweening; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; public class Device_SpecializedVariableAcquisitionTerminal : Device_Base { #region 门相关 /// /// 柜门 /// public Door door; /// /// 柜门螺丝 /// public Tool_Screw door_screw; /// /// 柜门封印 /// public Device_Seal seal; /// /// 柜门封印触发区域 /// public DeviceTrigger sealTrigger; #endregion /// /// 屏显控制 /// public Device_SpecializedVariableAcquisitionTerminal_ScreenControl screenControl; /// /// 重启按钮 /// public ClickMoveBounce restartBtn; #region U盘相关 /// /// u盘安装区域 /// public DeviceTrigger uPan_trigger; /// /// 安装的u盘 /// public Tool_UPan uPan; #endregion #region SIM卡 /// /// sim卡盖子 /// public ClickRotate sim_cover; /// /// sim卡 /// public Device_SIM sim; /// /// sim卡安装触发 /// public DeviceTrigger sim_trigger; #endregion /// /// 铭牌 /// public Device_SpecializedVariableAcquisitionTerminal_NatePlane natePlane; public DeviceTrigger trigger_天线; #region 电台相关 /// /// 电台 /// public Device_SpecializedVariableAcquisitionTerminal_RadioStation radioStation; /// /// 电台安装区域 /// public DeviceTrigger radiostation_trigger; public ClickMove line_电台网线插头; public ClickMove line_电台宽线插头; public ClickMove line_电台_天线连接线插头; public Device_SpecializedVariableAcquisitionTerminal_PowerPlug line_电台电源线插头; #endregion #region 板子 /// /// 外板子 /// public ClickMove outPlane; /// /// 外板螺丝 /// public List outPlane_screws; #endregion #region 天线插头相关 public Device_SpecializedVariableAcquisitionTerminal_TianXianPlug plug_tianxian上; public Device_SpecializedVariableAcquisitionTerminal_TianXianPlug plug_tianxian下; public DeviceTrigger plug_tianxian上_trigger; public DeviceTrigger plug_tianxian下_trigger; #endregion /// /// 电源开关 /// public ClickRotate powerSwitch; protected override void OnAwake() { base.OnAwake(); if(GameManager.RunModelMgr.SceneType!= E_SceneType.Site) { GetComponentsInChildren(true).ToList().ForEach(a => a.enabled = false); } GetComponentsInChildren(true).ToList().ForEach(a => a.Awake()); door.canOpen += () => { return !door_screw.isInstall; }; door_screw.AddCheckAction(() => { return seal.isCut; }); //安装封印 sealTrigger.clickAction += () => { if(triggerAction?.Invoke(sealTrigger.triggerName,true)==0) seal.Install(); }; //天线 trigger_天线.clickAction += () => { if(triggerAction==null || triggerAction.Invoke(trigger_天线.triggerName, true)==0) TipPanel.ShowTip("天线完好"); }; //重启按钮 restartBtn.clickAction += () => { screenControl.Restart(); }; //u盘安装触发区域 uPan_trigger.clickAction += () => { if(uPan==null && LiveSceneManager.Instance.currentTool.name.Contains("u盘")) { //安装upan if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(uPan_trigger.triggerName, false) == 0) { Tool_UPan upan = LiveSceneManager.Instance.currentTool.GetComponent(); upan.Add(uPan_trigger, result => { if(result) { uPan = upan; } }); } } }; #region SIM卡 //sim卡判断 sim.checkAction += () => { return sim_cover.isOpen; }; sim_cover.clickAction += isopen => { CheckShowSimTrigger(); }; //sim卡安装拆除事件 sim.clickAction += install => { if(install) { screenControl.isGPRS故障 = false; screenControl.Refresh(); } CheckShowSimTrigger(); }; //安装sim卡 sim_trigger.clickAction += () => { sim.Add(); CheckShowSimTrigger(); }; #endregion //电台安装 radiostation_trigger.clickAction += () => { if(radioStation==null && LiveSceneManager.Instance.currentTool.name.Contains("专变电台")) { if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(radiostation_trigger.triggerName, false) == 0) { Device_SpecializedVariableAcquisitionTerminal_RadioStation dt = LiveSceneManager.Instance.currentTool.GetComponent(); dt.Add(radiostation_trigger, result => { if(result) { dt.transform.parent = transform; radioStation = dt; } }); } } }; //外板子 outPlane.canOpen += () => { return outPlane_screws.All(screw => !screw.isInstall); }; //外板子螺丝 outPlane_screws.ForEach(screw => { screw.AddCheckAction(() => { return outPlane.isOpen; }); }); //电源开关 powerSwitch.clickAction += isopen => { CheckElectricity(); }; #region 天线插头相关 //选中插头条件 plug_tianxian上.canChoseAction += () => { return !plug_tianxian上.isChose && !plug_tianxian下.isChose; }; //选中插头条件 plug_tianxian下.canChoseAction += () => { return !plug_tianxian上.isChose && !plug_tianxian下.isChose; }; //选中插头 plug_tianxian上.choseAction += isChose => { plug_tianxian上_trigger.gameObject.SetActive(isChose); }; //选中插头 plug_tianxian下.choseAction += isChose => { plug_tianxian下_trigger.gameObject.SetActive(isChose); }; //点击安装插头 plug_tianxian上_trigger.clickAction += () => { if (plug_tianxian上.isChose) { plug_tianxian上.Install(plug_tianxian上_trigger); } }; //点击安装插头 plug_tianxian下_trigger.clickAction += () => { if (plug_tianxian下.isChose) { plug_tianxian下.Install(plug_tianxian下_trigger); } }; line_电台电源线插头.installActon += isinstall => { CheckElectricity(); }; #endregion } protected override void OnStart() { base.OnStart(); //添加拿出工具注册 EventCenter.Instance.AddEventListener(Enum_EventType.TakeOutAndRetrievingTheTools, OnHandTool); } protected override void OnDestroy() { base.OnDestroy(); //移除拿出工具注册 EventCenter.Instance.RemoveEventListener(Enum_EventType.TakeOutAndRetrievingTheTools, OnHandTool); } #region 拿出收回触发 private void OnHandTool(GameObject obj) { if (obj == null) { //收回 uPan_trigger.gameObject.SetActive(false); CheckShowSimTrigger(); CheckSealTrigger(); Check电台Trigger(); } else { //拿出 if (obj.name == "u盘") { if (door.isOpen && !door_screw.isInstall) { uPan_trigger.gameObject.SetActive(true); } } else if (obj.name == "盒装SIM卡") { CheckShowSimTrigger(); } else if (obj.name == "盒装封印") { CheckSealTrigger(); } else if (obj.name == "专变电台") { Check电台Trigger(); } } } private void CheckShowSimTrigger() { if (sim_cover.isOpen && !sim.isInstalled && LiveSceneManager.Instance.currentTool!=null && LiveSceneManager.Instance.currentTool.name.Contains("盒装SIM卡")) { sim_trigger.gameObject.SetActive(true); } else { sim_trigger.gameObject.SetActive(false); } } private void CheckSealTrigger() { if(seal.isCut && LiveSceneManager.Instance.currentTool != null && LiveSceneManager.Instance.currentTool.name.Contains("盒装封印")) { sealTrigger.gameObject.SetActive(true); } else { sealTrigger.gameObject.SetActive(false); } } private void Check电台Trigger() { if(radioStation==null && LiveSceneManager.Instance.currentTool != null && LiveSceneManager.Instance.currentTool.name.Contains("专变电台")) { radiostation_trigger.gameObject.SetActive(true); } else { radiostation_trigger.gameObject.SetActive(false); } } /// /// 刷新带电状态 /// public void CheckElectricity() { //电源插头带电 if(powerSwitch.isOpen) { line_电台电源线插头.redOne.hasElectricity = true; line_电台电源线插头.blackOne.hasElectricity = true; } else { line_电台电源线插头.redOne.hasElectricity = false; line_电台电源线插头.blackOne.hasElectricity = false; } //电台带电 if (radioStation != null) { radioStation.hasElectricity = powerSwitch.isOpen && line_电台电源线插头.isInstalled; radioStation.CheckFaultState(); } } #endregion /// /// 门关上状态 /// public void SetDoorCloseState() { door.SetState(false); seal.isCut = false; seal.gameObject.SetActive(true); door_screw.isInstall = true; door_screw.transform.localPosition = new Vector3(door_screw.transform.localPosition.x, door_screw.initPostionY, door_screw.transform.localPosition.z); } /// /// 门打开状态 /// public void SetDoorOpenState() { door.SetState(true); seal.isCut = true; seal.gameObject.SetActive(false); door_screw.isInstall = false; door_screw.transform.localPosition = new Vector3(door_screw.transform.localPosition.x, door_screw.initPostionY-0.03f, door_screw.transform.localPosition.z); } public void Set板子State(bool isopen) { if (isopen) { //装上 outPlane.SetState(true); outPlane_screws.ForEach(a => { a.isInstall = true; a.transform.localPosition = new Vector3(a.transform.localPosition.x, a.initPostionY, a.transform.localPosition.z); }); } else { //拆除 outPlane.SetState(false); outPlane_screws.ForEach(a => { a.isInstall = false; a.transform.localPosition = new Vector3(a.transform.localPosition.x, a.initPostionY - 0.02f, a.transform.localPosition.z); }); } } }