@@ -3176,9 +3176,11 @@ public enum SignalHoldType
31763176 public string StopName ;
31773177 public int arrivalTime ;
31783178 public int departureTime ;
3179+ public int passTime ;
31793180 public DateTime arrivalDT ;
31803181 public DateTime departureDT ;
3181- public bool arrdepvalid ;
3182+ public DateTime passDT ;
3183+ public bool arrdeppassvalid ;
31823184 public SignalHoldType holdState ;
31833185 public bool noWaitSignal ;
31843186 // public int passageTime; // not yet implemented
@@ -3199,17 +3201,34 @@ public StopInfo(string name, string arrTime, string depTime, TimetableInfo ttinf
31993201 refTTInfo = ttinfo ;
32003202 arrivalTime = - 1 ;
32013203 departureTime = - 1 ;
3204+ passTime = - 1 ;
32023205 Commands = null ;
32033206
32043207 TimeSpan atime ;
32053208 bool validArrTime = false ;
32063209 bool validDepTime = false ;
3210+ bool validPassTime = false ;
32073211
3208- validArrTime = TimeSpan . TryParse ( arrTime , out atime ) ;
3209- if ( validArrTime )
3212+ if ( arrTime . Contains ( "P" ) )
32103213 {
3211- arrivalTime = Convert . ToInt32 ( atime . TotalSeconds ) ;
3212- arrivalDT = new DateTime ( atime . Ticks ) ;
3214+ string passingTime = arrTime . Replace ( 'P' , ':' ) ;
3215+ validPassTime = TimeSpan . TryParse ( passingTime , out atime ) ;
3216+
3217+ if ( validPassTime )
3218+ {
3219+ passTime = Convert . ToInt32 ( atime . TotalSeconds ) ;
3220+ passDT = new DateTime ( atime . Ticks ) ;
3221+ }
3222+ }
3223+ else
3224+ {
3225+
3226+ validArrTime = TimeSpan . TryParse ( arrTime , out atime ) ;
3227+ if ( validArrTime )
3228+ {
3229+ arrivalTime = Convert . ToInt32 ( atime . TotalSeconds ) ;
3230+ arrivalDT = new DateTime ( atime . Ticks ) ;
3231+ }
32133232 }
32143233
32153234 validDepTime = TimeSpan . TryParse ( depTime , out atime ) ;
@@ -3219,7 +3238,7 @@ public StopInfo(string name, string arrTime, string depTime, TimetableInfo ttinf
32193238 departureDT = new DateTime ( atime . Ticks ) ;
32203239 }
32213240
3222- arrdepvalid = ( validArrTime || validDepTime ) ;
3241+ arrdeppassvalid = ( validArrTime || validDepTime ) ;
32233242
32243243 StopName = String . Copy ( name . ToLower ( ) ) ;
32253244 }
@@ -3236,8 +3255,8 @@ public bool BuildStopInfo(TTTrain actTrain, int actPlatformID, Signals signalRef
32363255 {
32373256 bool validStop = false ;
32383257
3239- // valid stop
3240- if ( arrdepvalid )
3258+ // valid stop and not passing
3259+ if ( arrdeppassvalid && passTime < 0 )
32413260 {
32423261 // check for station flags
32433262 bool terminal = false ;
@@ -3491,6 +3510,12 @@ public bool BuildStopInfo(TTTrain actTrain, int actPlatformID, Signals signalRef
34913510 }
34923511 }
34933512
3513+ // pass time only - valid condition but not yet processed
3514+ if ( ! validStop && passTime >= 0 )
3515+ {
3516+ validStop = true ;
3517+ }
3518+
34943519 return ( validStop ) ;
34953520 } // end buildStopInfo
34963521
0 commit comments