Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/MECF/Framework/Common/Device/Bases/SignalTowerPartAction.cs

72 lines
2.2 KiB
C#

using System;
namespace MECF.Framework.Common.Device.Bases
{
/// <summary>
/// 预设的信号灯塔元件动作。
/// </summary>
public class SignalTowerPartAction : IComparable, ICloneable
{
/// <summary>
/// 信号灯塔元件动作构造函数。
/// </summary>
/// <param name="light">信号灯类型。</param>
/// <param name="status">信号灯输出状态。</param>
/// <param name="blinkPattern">闪烁模式。如果传入空值,则自动调用
/// <see cref="STBlinkPattern.GetFastBlinkPattern()"/>以创建默认闪烁模式。</param>
public SignalTowerPartAction(LightType light, TowerLightStatus status, STBlinkPattern blinkPattern = null)
{
Light = light;
Status = status;
if(blinkPattern != null)
BlinkPattern = blinkPattern;
else
BlinkPattern = STBlinkPattern.GetFastBlinkPattern();
}
/// <summary>
/// 返回信号灯实例。
/// </summary>
public LightType Light { get; }
/// <summary>
/// 设置或返回信号灯的输出状态。
/// 支持的状态请参考<see cref="TowerLightStatus"/>枚举。
/// </summary>
public TowerLightStatus Status { get; set; }
/// <summary>
/// 设置或返回信号灯闪烁模式。
/// </summary>
public STBlinkPattern BlinkPattern { get; set; }
#region Methods
public bool DoAction(out string reason)
{
throw new NotImplementedException();
}
/// <inheritdoc />
public int CompareTo(object obj)
{
if (obj is not SignalTowerPartAction target)
return -1;
return (BlinkPattern.CompareTo(target.BlinkPattern) == 0 && Status == target.Status && Light == target.Light) ? 0 : -1;
}
/// <inheritdoc />
public object Clone()
{
return new SignalTowerPartAction(Light, Status, (STBlinkPattern)BlinkPattern.Clone());
}
#endregion
}
}