76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
|
|
using EasyInject.Attributes;
|
|
using Newtonsoft.Json;
|
|
using UnityEngine;
|
|
|
|
/// <summary>
|
|
/// 抽象的输送线设备
|
|
/// </summary>
|
|
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>() => (T)(object)conveyorData;
|
|
|
|
private bool isOpenPop;
|
|
|
|
public override DeviceData DeviceData => deviceData;
|
|
/// <summary>
|
|
/// 位置坐标
|
|
/// </summary>
|
|
public GameObject Position {
|
|
get{
|
|
return ShadowPosition ? ShadowPosition : gameObject;
|
|
}
|
|
}
|
|
|
|
public override void DataHandle(object data, object other = null)
|
|
{
|
|
conveyorData = JsonConvert.DeserializeObject<ConveyorData>(JsonConvert.SerializeObject(data));
|
|
deviceData = JsonConvert.DeserializeObject<DeviceData>(JsonConvert.SerializeObject(other));
|
|
base.DataHandle(data, other);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 容器在输送线上可停靠的坐标
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|