@@ -171,6 +171,7 @@ public enum SpeedSelectorMode { Parking, Neutral, On, Start }
171171 public bool HasIndependentThrottleDynamicBrakeLever = false ;
172172 public bool HasProportionalSpeedSelector = false ;
173173 public bool SpeedSelectorIsDiscrete = false ;
174+ private bool speedSelectorIsDiscreteSet = false ;
174175 public bool DoComputeNumberOfAxles = false ;
175176 public bool DisableManualSwitchToAutoWhenSetSpeedNotAtTop = false ;
176177 public bool EnableSelectedSpeedSelectionWhenManualModeSet = false ;
@@ -301,6 +302,7 @@ public CruiseControl(CruiseControl other, MSTSLocomotive locomotive)
301302 DisableManualSwitchToAutoWhenSetSpeedNotAtTop = other . DisableManualSwitchToAutoWhenSetSpeedNotAtTop ;
302303 EnableSelectedSpeedSelectionWhenManualModeSet = other . EnableSelectedSpeedSelectionWhenManualModeSet ;
303304 SpeedSelectorIsDiscrete = other . SpeedSelectorIsDiscrete ;
305+ speedSelectorIsDiscreteSet = other . SpeedSelectorIsDiscrete ;
304306 DoComputeNumberOfAxles = other . DoComputeNumberOfAxles ;
305307 UseTrainBrakeAndDynBrake = other . UseTrainBrakeAndDynBrake ;
306308 UseDynBrake = other . UseDynBrake ;
@@ -392,7 +394,7 @@ public void Parse(STFReader stf)
392394 case "ascspeedtakespriorityoverspeedselector" : ASCSpeedTakesPriorityOverSpeedSelector = stf . ReadBoolBlock ( false ) ; break ;
393395 case "hasindependentthrottledynamicbrakelever" : HasIndependentThrottleDynamicBrakeLever = stf . ReadBoolBlock ( false ) ; break ;
394396 case "hasproportionalspeedselector" : HasProportionalSpeedSelector = stf . ReadBoolBlock ( false ) ; break ;
395- case "speedselectorisdiscrete" : SpeedSelectorIsDiscrete = stf . ReadBoolBlock ( false ) ; break ;
397+ case "speedselectorisdiscrete" : speedSelectorIsDiscreteSet = true ; SpeedSelectorIsDiscrete = stf . ReadBoolBlock ( false ) ; break ;
396398 case "usetrainbrakeanddynbrake" : UseTrainBrakeAndDynBrake = stf . ReadBoolBlock ( false ) ; break ;
397399 case "usedynbrake" : UseDynBrake = stf . ReadBoolBlock ( false ) ; break ;
398400 case "speeddeltatoenabletrainbrake" : SpeedDeltaToEnableTrainBrake = stf . ReadFloatBlock ( STFReader . UNITS . Speed , 5f ) ; break ;
@@ -507,6 +509,13 @@ public void Initialize()
507509
508510 if ( StartInAutoMode ) SpeedRegMode = SpeedRegulatorMode . Auto ;
509511
512+ if ( ! speedSelectorIsDiscreteSet )
513+ {
514+ var mpc = Locomotive . MultiPositionControllers . Where ( x => x . controllerBinding == ControllerBinding . SelectedSpeed ) . FirstOrDefault ( ) ;
515+ SpeedSelectorIsDiscrete = mpc == null ;
516+ }
517+ if ( SpeedSelectorIsDiscrete && SpeedRegulatorNominalSpeedStepMpS <= 0 ) SpeedRegulatorNominalSpeedStepMpS = MpS . FromMpS ( 1.0f , ! SpeedIsMph ) ;
518+
510519 if ( UseThrottleAsForceSelector )
511520 {
512521 MaxForceSelectorController = Locomotive . ThrottleController ;
0 commit comments