/// <summary> /// Connects this signal to other lineside equipment. /// </summary> /// <remarks> /// This must only be called by the SubArea constructor. /// </remarks> /// <param name="schema">The schema object containing data about this signal.</param> /// <param name="region">The region that contains this signal.</param> public void InitLinks(Schema.AutomaticSignal schema, Region region) { if (schema.ProtectedTC.HasValue) { ProtectedTrackCircuit = region.GetTrackCircuit(schema.ProtectedTC.Value, SubArea); ProtectedTrackCircuit.PropertyChanged += OnTCPropChanged; } if (schema.NextSignal.HasValue) { NextSignal = region.GetSignal(schema.NextSignal.Value, SubArea); NextSignal.PropertyChanged += OnNextSignalPropChanged; } UpdateAspects(); }
/// <summary> /// Constructs a new automatic signal. /// </summary> /// <param name="schema">The schema object containing data about this signal.</param> /// <param name="id">The position of this signal in the automatic signals array.</param> /// <param name="subArea">The ID of the sub-area that contains this signal.</param> public AutomaticSignal(Schema.AutomaticSignal schema, short id, ushort subArea) : base(subArea, id, schema.HeadCount, schema.DivergenceLookahead) { Debug.Assert(id < 0); }