Skip to content

Commit 6e2f0ba

Browse files
committed
Further fixes for force selector
1 parent 4701383 commit 6e2f0ba

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/CruiseControl.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ public float SelectedMaxAccelerationPercent
4141
get
4242
{
4343
if (SpeedRegulatorMaxForcePercentUnits) return selectedMaxAccelerationPercent;
44+
if (MaxForceSelectorIsDiscrete) return (float)Math.Round(selectedMaxAccelerationStep) / SpeedRegulatorMaxForceSteps * 100;
4445
return selectedMaxAccelerationStep / SpeedRegulatorMaxForceSteps * 100;
4546
}
4647
set
4748
{
4849
if (SpeedRegulatorMaxForcePercentUnits) selectedMaxAccelerationPercent = value;
50+
else if (MaxForceSelectorIsDiscrete) selectedMaxAccelerationStep = (int)Math.Round(value * SpeedRegulatorMaxForceSteps / 100);
4951
else selectedMaxAccelerationStep = value * SpeedRegulatorMaxForceSteps / 100;
5052
}
5153
}
@@ -795,6 +797,7 @@ public void SpeedRegulatorMaxForceStartDecrease()
795797
{
796798
Locomotive.SignalEvent(Common.Event.CruiseControlMaxForce);
797799
maxForceDecreasing = true;
800+
speedRegulatorIntermediateValue = SpeedRegulatorMaxForcePercentUnits ? selectedMaxAccelerationPercent : selectedMaxAccelerationStep;
798801
}
799802
public void SpeedRegulatorMaxForceStopDecrease()
800803
{
@@ -1031,10 +1034,9 @@ public void SpeedRegulatorSelectedSpeedChangeByMouse(float movExtension, bool me
10311034
else if (movExtension < 0)
10321035
return;
10331036
}
1034-
var deltaSpeed = SpeedSelectorIsDiscrete ? (metric ? MpS.FromKpH((float)Math.Round(movExtension * maxValue / SpeedRegulatorNominalSpeedStepKpHOrMpH) * SpeedRegulatorNominalSpeedStepKpHOrMpH) :
1035-
MpS.FromMpH((float)Math.Round(movExtension * maxValue / SpeedRegulatorNominalSpeedStepKpHOrMpH) * SpeedRegulatorNominalSpeedStepKpHOrMpH)) :
1036-
(metric ? MpS.FromKpH((float)Math.Round(movExtension * maxValue)) :
1037-
MpS.FromMpH((float)Math.Round(movExtension * maxValue)));
1037+
var deltaSpeed = SpeedSelectorIsDiscrete ?
1038+
MpS.ToMpS((float)Math.Round(movExtension * maxValue / SpeedRegulatorNominalSpeedStepKpHOrMpH) * SpeedRegulatorNominalSpeedStepKpHOrMpH, metric) :
1039+
MpS.ToMpS((float)Math.Round(movExtension * maxValue), true);
10381040
if (deltaSpeed > 0)
10391041
SelectedSpeedMpS = Math.Max(SelectedSpeedMpS + deltaSpeed, MinimumSpeedForCCEffectMpS);
10401042
else

0 commit comments

Comments
 (0)