AK056/Assets/GameLogic/Origin/device/conveyor/AbstractConveyorDevice.cs

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);
}
}