新增信号交互进程插件

This commit is contained in:
ykkokluo
2026-08-17 15:20:27 +08:00
parent 12c7c1d518
commit cacc5fea5c
25 changed files with 937 additions and 369 deletions
@@ -6,9 +6,18 @@ using StandardScene.Signal.Plc;
namespace StandardScene.Signal.Logic
{
/// <summary>对齐反编译 DefaultPlugin.PointControl:牵引棒升/降到位后再放行。</summary>
/// <summary>
/// 销钉 / 牵引棒升降后再放行。对齐反编译 <c>DefaultPlugin.PointControl</c>。
/// </summary>
/// <remarks>
/// <c>SignalParams</c><c>动作;机构名</c>。
/// 动作:<c>UP1</c> 升销钉1<c>UP2</c> 升销钉1+2<c>Down1</c> / <c>Down2</c> 对应下降。
/// 机构名可选:填了则必须等该机构读字节=允许离开才启动;空则只等销钉动作完成。
/// 销钉指令通过 <see cref="SignalCarAdapter.Control"/> 反射调用车体 MethodMember(如 SetPin1Up)。
/// </remarks>
public static class PointControlHandler
{
/// <summary>停稳:先判机构是否允许离开,再下发销钉,全部到位后启动。</summary>
public static void OnStopped(Car car, SignalStopSpec spec, Func<string, PlcStationRuntime> find)
{
var action = spec.Part(0).Trim();
@@ -48,6 +57,10 @@ namespace StandardScene.Signal.Logic
}
}
/// <summary>
/// 任一销钉未完成则本拍只下发指令、不启动;
/// 全部完成且(无需等离开 或 已允许离开)才 Start。
/// </summary>
private static void PinThenGo(Car car, int pos, bool waitLeave, string jgName, params string[] actions)
{
var done = true;