Exemple #1
0
        /// <summary>
        /// Computes the aspects object shown in rear of this one, assuming an unblocked straight route.
        /// </summary>
        /// <param name="divergenceLookahead">How far ahead to consider divergences.</param>
        /// <returns>The aspects in rear of this one.</returns>
        public Aspects NextInRear(EDivergenceLookahead divergenceLookahead)
        {
            switch (Type)
            {
            case EAspectsType.Red:
            case EAspectsType.AllLunar:
            case EAspectsType.OneLunar:
                return(new Aspects(EAspectsType.Yellow, 0));

            case EAspectsType.Yellow:
                return(new Aspects(EAspectsType.FlashingYellow, 0));

            case EAspectsType.FlashingYellow:
            case EAspectsType.Green:
                return(new Aspects(EAspectsType.Green, 0));

            case EAspectsType.RedOverYellow:
                return(new Aspects((divergenceLookahead != EDivergenceLookahead.Short) ? EAspectsType.YellowOverYellow : EAspectsType.FlashingYellow, IdentifiedHead));

            case EAspectsType.RedOverFlashingYellow:
                return(new Aspects((divergenceLookahead != EDivergenceLookahead.Short) ? EAspectsType.YellowOverYellow : EAspectsType.Green, IdentifiedHead));

            case EAspectsType.RedOverGreen:
                return(new Aspects((divergenceLookahead != EDivergenceLookahead.Short) ? EAspectsType.YellowOverGreen : EAspectsType.Green, IdentifiedHead));

            case EAspectsType.YellowOverYellow:
            case EAspectsType.YellowOverGreen:
                return(new Aspects((divergenceLookahead == EDivergenceLookahead.Long) ? EAspectsType.FlashingYellow : EAspectsType.Green, 0));
            }
            return(new Aspects(EAspectsType.Red, 0));
        }
Exemple #2
0
 /// <summary>
 /// Constructs a new Signal.
 /// </summary>
 /// <param name="subArea">Which sub-area contains this signal.</param>
 /// <param name="id">The ID number of the signal.</param>
 /// <param name="heads">The number of heads (lamps) in this signal.</param>
 protected Signal(ushort subArea, short id, byte heads, EDivergenceLookahead divergenceLookahead)
 {
     Debug.Assert(subArea >= 0);
     SubArea             = subArea;
     ID                  = id;
     Heads               = heads;
     DivergenceLookahead = divergenceLookahead;
 }