Skip to content

Commit d294ec8

Browse files
author
Chris Jakeman
committed
Player train start time stashed
Fix for some scenarios where this value gets overwritten and the loader bar disappears.
1 parent 52c1265 commit d294ec8

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

Source/Orts.Simulation/Simulation/AIs/AI.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,8 +374,8 @@ private void PrerunAI(int playerTrainOriginalTrain, TTTrain.FormCommand playerTr
374374
bool activeTrains = false;
375375
for (double runTime = firstAITime; runTime < Simulator.ClockTime && !endPreRun; runTime += 5.0) // update with 5 secs interval
376376
{
377-
var loaderSpan = (float)playerTrain.StartTime - firstAITime;
378-
Simulator.TimetableLoadedFraction = ((float)clockTime - firstAITime) / loaderSpan;
377+
var loaderSpan = (float)TimetableInfo.PlayerTrainOriginalStartTime - firstAITime;
378+
Simulator.TimetableLoadedFraction = ((float)runTime - firstAITime) / loaderSpan;
379379

380380
int fullsec = Convert.ToInt32(runTime);
381381
if (fullsec % 3600 < 5) Trace.Write(" " + (fullsec / 3600).ToString("00") + ":00 ");

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ private enum rowType
8080

8181
public bool BinaryPaths = false;
8282

83+
public static int? PlayerTrainOriginalStartTime; // Set by TimetableInfo.ProcessTimetable() and read by AI.PrerunAI()
84+
8385
//================================================================================================//
8486
/// <summary>
8587
/// Constructor - empty constructor
@@ -171,7 +173,7 @@ public List<TTTrain> ProcessTimetable(string[] arguments, CancellationToken canc
171173
addPathNoLoadFailure = playerTrain.ProcessDisposeInfo(ref trainList, null, simulator);
172174
if (!addPathNoLoadFailure) loadPathNoFailure = false;
173175
}
174-
176+
PlayerTrainOriginalStartTime = playerTrain.StartTime; // Saved here for use after playerTrain.StartTime gets changed.
175177
reqPlayerTrain = InitializePlayerTrain(playerTrain, ref Paths, ref trainList);
176178
simulator.TrainDictionary.Add(reqPlayerTrain.Number, reqPlayerTrain);
177179
simulator.NameDictionary.Add(reqPlayerTrain.Name.ToLower(), reqPlayerTrain);

0 commit comments

Comments
 (0)