using System; using StandardScene.Signal.Model; namespace StandardScene.Signal.Logic { /// 握手点解析结果。参数格式与反编译 SignalStop.SignalParams 一致。 public sealed class SignalStopSpec { public string SignalType { get; init; } = ""; public string SignalParams { get; init; } = ""; public string[] Parts { get; init; } = Array.Empty(); public string Part(int index) { if (index < 0 || index >= Parts.Length) return ""; return Parts[index] ?? ""; } public static SignalStopSpec Parse(string signalType, string signalParams) { var type = (signalType ?? "").Trim(); var raw = signalParams ?? ""; return new SignalStopSpec { SignalType = type, SignalParams = raw, Parts = raw.Split(new[] { ';' }, StringSplitOptions.None) }; } public static SignalStopSpec From(HandshakePointModel model) { if (model == null) return null; return Parse(model.SignalType, model.SignalParams); } public bool Is(string type) => string.Equals(SignalType, type, StringComparison.OrdinalIgnoreCase); } }