Skip to content

Commit

Permalink
Merge pull request #780 from Roeterdink/ProcessPassingTime
Browse files Browse the repository at this point in the history
Process passing time
  • Loading branch information
cjakeman committed Feb 27, 2023
2 parents 7cdc4eb + 5b3f246 commit cf8971c
Showing 1 changed file with 33 additions and 8 deletions.
41 changes: 33 additions & 8 deletions Source/Orts.Simulation/Simulation/Timetables/ProcessTimetable.cs
Expand Up @@ -3176,9 +3176,11 @@ public enum SignalHoldType
public string StopName;
public int arrivalTime;
public int departureTime;
public int passTime;
public DateTime arrivalDT;
public DateTime departureDT;
public bool arrdepvalid;
public DateTime passDT;
public bool arrdeppassvalid;
public SignalHoldType holdState;
public bool noWaitSignal;
// public int passageTime; // not yet implemented
Expand All @@ -3199,17 +3201,34 @@ public StopInfo(string name, string arrTime, string depTime, TimetableInfo ttinf
refTTInfo = ttinfo;
arrivalTime = -1;
departureTime = -1;
passTime = -1;
Commands = null;

TimeSpan atime;
bool validArrTime = false;
bool validDepTime = false;
bool validPassTime = false;

validArrTime = TimeSpan.TryParse(arrTime, out atime);
if (validArrTime)
if (arrTime.Contains("P"))
{
arrivalTime = Convert.ToInt32(atime.TotalSeconds);
arrivalDT = new DateTime(atime.Ticks);
string passingTime = arrTime.Replace('P', ':');
validPassTime = TimeSpan.TryParse(passingTime, out atime);

if (validPassTime)
{
passTime = Convert.ToInt32(atime.TotalSeconds);
passDT = new DateTime(atime.Ticks);
}
}
else
{

validArrTime = TimeSpan.TryParse(arrTime, out atime);
if (validArrTime)
{
arrivalTime = Convert.ToInt32(atime.TotalSeconds);
arrivalDT = new DateTime(atime.Ticks);
}
}

validDepTime = TimeSpan.TryParse(depTime, out atime);
Expand All @@ -3219,7 +3238,7 @@ public StopInfo(string name, string arrTime, string depTime, TimetableInfo ttinf
departureDT = new DateTime(atime.Ticks);
}

arrdepvalid = (validArrTime || validDepTime);
arrdeppassvalid = (validArrTime || validDepTime);

StopName = String.Copy(name.ToLower());
}
Expand All @@ -3236,8 +3255,8 @@ public bool BuildStopInfo(TTTrain actTrain, int actPlatformID, Signals signalRef
{
bool validStop = false;

// valid stop
if (arrdepvalid)
// valid stop and not passing
if (arrdeppassvalid && passTime < 0)
{
// check for station flags
bool terminal = false;
Expand Down Expand Up @@ -3491,6 +3510,12 @@ public bool BuildStopInfo(TTTrain actTrain, int actPlatformID, Signals signalRef
}
}

// pass time only - valid condition but not yet processed
if (!validStop && passTime >= 0)
{
validStop = true;
}

return (validStop);
} // end buildStopInfo

Expand Down

0 comments on commit cf8971c

Please sign in to comment.