using EasyInject.Attributes; using Newtonsoft.Json; using UnityEngine; /// /// 抽象的输送线设备 /// public abstract class AbstractConveyorDevice : AbstractDevice { [Autowired] public ConveyorPopUI PopUI; public ConveyorData conveyorData; public GameObject ShadowPosition; public DeviceData deviceData; public override string DeviceType => "CONVEYOR"; public override Transform Transform => transform; public override string DeviceCode => this.name; public override T DynamicData() => (T)(object)conveyorData; private bool isOpenPop; public override DeviceData DeviceData => deviceData; /// /// 位置坐标 /// public GameObject Position { get{ return ShadowPosition ? ShadowPosition : gameObject; } } public override void DataHandle(object data, object other = null) { conveyorData = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(data)); deviceData = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(other)); base.DataHandle(data, other); } /// /// 容器在输送线上可停靠的坐标 /// public Vector3 ContainerParkingPosition { get { if(ShadowPosition != null) { return ShadowPosition.transform.position; } else { return transform.position; } } } public Transform ContainerParkingTransform { get { if (ShadowPosition != null) { return ShadowPosition.transform; } else { return transform; } } } public override void MouseSingleClick() { isOpenPop = !isOpenPop; PopUI.Open(this,isOpenPop); } }