Skip to content

Commit 5b3f246

Browse files
committed
Process passing time
1 parent 3ffb9bc commit 5b3f246

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

Source/Orts.Simulation/Simulation/Timetables/ProcessTimetable.cs

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3192,9 +3192,11 @@ public enum SignalHoldType
31923192
public string StopName;
31933193
public int arrivalTime;
31943194
public int departureTime;
3195+
public int passTime;
31953196
public DateTime arrivalDT;
31963197
public DateTime departureDT;
3197-
public bool arrdepvalid;
3198+
public DateTime passDT;
3199+
public bool arrdeppassvalid;
31983200
public SignalHoldType holdState;
31993201
public bool noWaitSignal;
32003202
// public int passageTime; // not yet implemented
@@ -3215,17 +3217,34 @@ public StopInfo(string name, string arrTime, string depTime, TimetableInfo ttinf
32153217
refTTInfo = ttinfo;
32163218
arrivalTime = -1;
32173219
departureTime = -1;
3220+
passTime = -1;
32183221
Commands = null;
32193222

32203223
TimeSpan atime;
32213224
bool validArrTime = false;
32223225
bool validDepTime = false;
3226+
bool validPassTime = false;
32233227

3224-
validArrTime = TimeSpan.TryParse(arrTime, out atime);
3225-
if (validArrTime)
3228+
if (arrTime.Contains("P"))
32263229
{
3227-
arrivalTime = Convert.ToInt32(atime.TotalSeconds);
3228-
arrivalDT = new DateTime(atime.Ticks);
3230+
string passingTime = arrTime.Replace('P', ':');
3231+
validPassTime = TimeSpan.TryParse(passingTime, out atime);
3232+
3233+
if (validPassTime)
3234+
{
3235+
passTime = Convert.ToInt32(atime.TotalSeconds);
3236+
passDT = new DateTime(atime.Ticks);
3237+
}
3238+
}
3239+
else
3240+
{
3241+
3242+
validArrTime = TimeSpan.TryParse(arrTime, out atime);
3243+
if (validArrTime)
3244+
{
3245+
arrivalTime = Convert.ToInt32(atime.TotalSeconds);
3246+
arrivalDT = new DateTime(atime.Ticks);
3247+
}
32293248
}
32303249

32313250
validDepTime = TimeSpan.TryParse(depTime, out atime);
@@ -3235,7 +3254,7 @@ public StopInfo(string name, string arrTime, string depTime, TimetableInfo ttinf
32353254
departureDT = new DateTime(atime.Ticks);
32363255
}
32373256

3238-
arrdepvalid = (validArrTime || validDepTime);
3257+
arrdeppassvalid = (validArrTime || validDepTime);
32393258

32403259
StopName = String.Copy(name.ToLower());
32413260
}
@@ -3252,8 +3271,8 @@ public bool BuildStopInfo(TTTrain actTrain, int actPlatformID, Signals signalRef
32523271
{
32533272
bool validStop = false;
32543273

3255-
// valid stop
3256-
if (arrdepvalid)
3274+
// valid stop and not passing
3275+
if (arrdeppassvalid && passTime < 0)
32573276
{
32583277
// check for station flags
32593278
bool terminal = false;
@@ -3507,6 +3526,12 @@ public bool BuildStopInfo(TTTrain actTrain, int actPlatformID, Signals signalRef
35073526
}
35083527
}
35093528

3529+
// pass time only - valid condition but not yet processed
3530+
if (!validStop && passTime >= 0)
3531+
{
3532+
validStop = true;
3533+
}
3534+
35103535
return (validStop);
35113536
} // end buildStopInfo
35123537

0 commit comments

Comments
 (0)