CultivationOfBrewing-2/Assets/Scripts/CXX/Devices/专变采集终端/Device_SpecializedVariableA...

420 lines
12 KiB
C#

using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class Device_SpecializedVariableAcquisitionTerminal : Device_Base
{
#region
/// <summary>
/// 柜门
/// </summary>
public Door door;
/// <summary>
/// 柜门螺丝
/// </summary>
public Tool_Screw door_screw;
/// <summary>
/// 柜门封印
/// </summary>
public Device_Seal seal;
/// <summary>
/// 柜门封印触发区域
/// </summary>
public DeviceTrigger sealTrigger;
#endregion
/// <summary>
/// 屏显控制
/// </summary>
public Device_SpecializedVariableAcquisitionTerminal_ScreenControl screenControl;
/// <summary>
/// 重启按钮
/// </summary>
public ClickMoveBounce restartBtn;
#region U盘相关
/// <summary>
/// u盘安装区域
/// </summary>
public DeviceTrigger uPan_trigger;
/// <summary>
/// 安装的u盘
/// </summary>
public Tool_UPan uPan;
#endregion
#region SIM卡
/// <summary>
/// sim卡盖子
/// </summary>
public ClickRotate sim_cover;
/// <summary>
/// sim卡
/// </summary>
public Device_SIM sim;
/// <summary>
/// sim卡安装触发
/// </summary>
public DeviceTrigger sim_trigger;
#endregion
/// <summary>
/// 铭牌
/// </summary>
public Device_SpecializedVariableAcquisitionTerminal_NatePlane natePlane;
public DeviceTrigger trigger_天线;
#region
/// <summary>
/// 电台
/// </summary>
public Device_SpecializedVariableAcquisitionTerminal_RadioStation radioStation;
/// <summary>
/// 电台安装区域
/// </summary>
public DeviceTrigger radiostation_trigger;
public ClickMove line_电台网线插头;
public ClickMove line_电台宽线插头;
public ClickMove line_电台_天线连接线插头;
public Device_SpecializedVariableAcquisitionTerminal_PowerPlug line_电台电源线插头;
#endregion
#region
/// <summary>
/// 外板子
/// </summary>
public ClickMove outPlane;
/// <summary>
/// 外板螺丝
/// </summary>
public List<Tool_Screw> 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
/// <summary>
/// 电源开关
/// </summary>
public ClickRotate powerSwitch;
protected override void OnAwake()
{
base.OnAwake();
if(GameManager.RunModelMgr.SceneType!= E_SceneType.Site)
{
GetComponentsInChildren<LineRenderer>(true).ToList().ForEach(a => a.enabled = false);
}
GetComponentsInChildren<PermanentTriggerBase>(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<Tool_UPan>();
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<Device_SpecializedVariableAcquisitionTerminal_RadioStation>();
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<GameObject>(Enum_EventType.TakeOutAndRetrievingTheTools, OnHandTool);
}
protected override void OnDestroy()
{
base.OnDestroy();
//移除拿出工具注册
EventCenter.Instance.RemoveEventListener<GameObject>(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);
}
}
/// <summary>
/// 刷新带电状态
/// </summary>
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
/// <summary>
/// 门关上状态
/// </summary>
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);
}
/// <summary>
/// 门打开状态
/// </summary>
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);
});
}
}
}