@@ -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