namespace StandardScene.Magnetic.Tasking
{
    /// <summary>
    /// FASS 2.0 站点 <c>fields</c> 键名常量，用于地图编辑器配置站点动作。
    /// </summary>
    public static class Fass2SiteFields
    {
        public const string TagValue = "TagValue";

        public const string StartStop = "Fass2_StartStop";
        public const string Byroad = "Fass2_Byroad";
        public const string Direction = "Fass2_Direction";
        public const string Orientation = "Fass2_Orientation";
        public const string Lift = "Fass2_Lift";
        public const string Roll = "Fass2_Roll";
        public const string Charge = "Fass2_Charge";
        public const string Obstacle = "Fass2_Obstacle";
        public const string Audio = "Fass2_Audio";
        public const string Light = "Fass2_Light";
        public const string Rest = "Fass2_Rest";
        public const string Clamp = "Fass2_Clamp";
        public const string Tray = "Fass2_Tray";
        public const string Shutdown = "Fass2_Shutdown";
        public const string PrecisionStop = "Fass2_PrecisionStop";
        public const string WaitMode = "Fass2_WaitMode";
        public const string ControlArea = "Fass2_ControlArea";
        public const string ControlCapacity = "Fass2_ControlCapacity";
        public const string ControlReleaseStartStop = "Fass2_ControlReleaseStartStop";
    }

    /// <summary>
    /// 从站点 fields 解析出的动作参数（映射到 25B 节点块）。
    /// </summary>
    public sealed class Fass2SiteActionData
    {
        public byte? StartStop { get; set; }
        public byte? Byroad { get; set; }
        public byte? Direction { get; set; }
        public byte? Orientation { get; set; }
        public byte? Lift { get; set; }
        public byte? Roll { get; set; }
        public byte? Charge { get; set; }
        public byte? Obstacle { get; set; }
        public byte? Audio { get; set; }
        public byte? Light { get; set; }
        public byte? Rest { get; set; }
        public byte? Clamp { get; set; }
        public byte? Tray { get; set; }
        public byte? Shutdown { get; set; }
        public bool PrecisionStop { get; set; }
        public string WaitMode { get; set; }
        public string ControlArea { get; set; }
        public int? ControlCapacity { get; set; }
        public byte? ControlReleaseStartStop { get; set; }
    }
}
