@@ -171,6 +171,7 @@ public enum SpeedSelectorMode { Parking, Neutral, On, Start }
171
171
public bool HasIndependentThrottleDynamicBrakeLever = false ;
172
172
public bool HasProportionalSpeedSelector = false ;
173
173
public bool SpeedSelectorIsDiscrete = false ;
174
+ private bool speedSelectorIsDiscreteSet = false ;
174
175
public bool DoComputeNumberOfAxles = false ;
175
176
public bool DisableManualSwitchToAutoWhenSetSpeedNotAtTop = false ;
176
177
public bool EnableSelectedSpeedSelectionWhenManualModeSet = false ;
@@ -301,6 +302,7 @@ public CruiseControl(CruiseControl other, MSTSLocomotive locomotive)
301
302
DisableManualSwitchToAutoWhenSetSpeedNotAtTop = other . DisableManualSwitchToAutoWhenSetSpeedNotAtTop ;
302
303
EnableSelectedSpeedSelectionWhenManualModeSet = other . EnableSelectedSpeedSelectionWhenManualModeSet ;
303
304
SpeedSelectorIsDiscrete = other . SpeedSelectorIsDiscrete ;
305
+ speedSelectorIsDiscreteSet = other . SpeedSelectorIsDiscrete ;
304
306
DoComputeNumberOfAxles = other . DoComputeNumberOfAxles ;
305
307
UseTrainBrakeAndDynBrake = other . UseTrainBrakeAndDynBrake ;
306
308
UseDynBrake = other . UseDynBrake ;
@@ -392,7 +394,7 @@ public void Parse(STFReader stf)
392
394
case "ascspeedtakespriorityoverspeedselector" : ASCSpeedTakesPriorityOverSpeedSelector = stf . ReadBoolBlock ( false ) ; break ;
393
395
case "hasindependentthrottledynamicbrakelever" : HasIndependentThrottleDynamicBrakeLever = stf . ReadBoolBlock ( false ) ; break ;
394
396
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 ;
396
398
case "usetrainbrakeanddynbrake" : UseTrainBrakeAndDynBrake = stf . ReadBoolBlock ( false ) ; break ;
397
399
case "usedynbrake" : UseDynBrake = stf . ReadBoolBlock ( false ) ; break ;
398
400
case "speeddeltatoenabletrainbrake" : SpeedDeltaToEnableTrainBrake = stf . ReadFloatBlock ( STFReader . UNITS . Speed , 5f ) ; break ;
@@ -507,6 +509,13 @@ public void Initialize()
507
509
508
510
if ( StartInAutoMode ) SpeedRegMode = SpeedRegulatorMode . Auto ;
509
511
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
+
510
519
if ( UseThrottleAsForceSelector )
511
520
{
512
521
MaxForceSelectorController = Locomotive . ThrottleController ;
0 commit comments