Skip to content

Commit aa73f61

Browse files
committed
Correct issue with save/resume not working
1 parent c6d7941 commit aa73f61

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public float DieselLevelL
9494
public int currentGearIndexRestore = -1;
9595
public int currentnextGearRestore = -1;
9696
public bool gearSaved;
97+
public int dieselEngineRestoreState;
9798

9899
public float EngineRPM;
99100
public SmoothedData ExhaustParticles = new SmoothedData(1);

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/PowerSupplies/DieselEngine.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,11 +1022,16 @@ public void Copy(DieselEngine other)
10221022

10231023
public void Initialize()
10241024
{
1025-
if (!Simulator.Settings.NoDieselEngineStart)
1025+
if (!Simulator.Settings.NoDieselEngineStart && !Locomotive.gearSaved)
10261026
{
10271027
RealRPM = IdleRPM;
10281028
State = DieselEngineState.Running;
10291029
}
1030+
else if (Locomotive.gearSaved)
1031+
{
1032+
State = (DieselEngineState)Locomotive.dieselEngineRestoreState;
1033+
}
1034+
10301035
RPMRange = MaxRPM - IdleRPM;
10311036
MagnitudeRange = MaxMagnitude - InitialMagnitude;
10321037
ExhaustRange = MaxExhaust - InitialExhaust;
@@ -1042,8 +1047,15 @@ public void Initialize()
10421047

10431048
public void InitializeMoving()
10441049
{
1045-
RealRPM = IdleRPM;
1046-
State = DieselEngineState.Running;
1050+
if (!Simulator.Settings.NoDieselEngineStart && !Locomotive.gearSaved)
1051+
{
1052+
RealRPM = IdleRPM;
1053+
State = DieselEngineState.Running;
1054+
}
1055+
else if (Locomotive.gearSaved)
1056+
{
1057+
State = (DieselEngineState)Locomotive.dieselEngineRestoreState;
1058+
}
10471059

10481060
GearBox?.InitializeMoving();
10491061
}
@@ -1592,7 +1604,8 @@ public void HandleEvent(PowerSupplyEvent evt)
15921604

15931605
public void Restore(BinaryReader inf)
15941606
{
1595-
State = (DieselEngineState)inf.ReadInt32();
1607+
Locomotive.dieselEngineRestoreState = inf.ReadInt32();
1608+
State = (DieselEngineState)Locomotive.dieselEngineRestoreState;
15961609
RealRPM = inf.ReadSingle();
15971610
OutputPowerW = inf.ReadSingle();
15981611
DieselTemperatureDeg = inf.ReadSingle();

0 commit comments

Comments
 (0)