@@ -104,7 +104,6 @@ public enum SpeedSelectorMode { Parking, Neutral, On, Start }
104104 public float AccelerationRampMaxMpSSS = 0.7f ;
105105 public float AccelerationDemandMpSS ;
106106 public float AccelerationRampMinMpSSS = 0.01f ;
107- public bool ResetForceAfterAnyBraking = false ;
108107 public float ThrottleFullRangeIncreaseTimeSeconds = 6 ;
109108 public float ThrottleFullRangeDecreaseTimeSeconds = 6 ;
110109 public float DynamicBrakeFullRangeIncreaseTimeSeconds ;
@@ -134,7 +133,6 @@ public enum SpeedSelectorMode { Parking, Neutral, On, Start }
134133 public bool DisableCruiseControlOnThrottleAndZeroForce = false ;
135134 public bool DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed = false ;
136135 public bool ForceResetRequiredAfterBraking = false ;
137- public bool ForceResetIncludeDynamicBrake = false ;
138136 public bool ZeroSelectedSpeedWhenPassingToThrottleMode = false ;
139137 public bool DynamicBrakeCommandHasPriorityOverCruiseControl = true ;
140138 public bool TrainBrakeCommandHasPriorityOverCruiseControl = true ;
@@ -221,7 +219,6 @@ public CruiseControl(CruiseControl other, MSTSLocomotive locomotive)
221219 AccelerationTable = other . AccelerationTable ;
222220 AccelerationRampMaxMpSSS = other . AccelerationRampMaxMpSSS ;
223221 AccelerationRampMinMpSSS = other . AccelerationRampMinMpSSS ;
224- ResetForceAfterAnyBraking = other . ResetForceAfterAnyBraking ;
225222 ThrottleFullRangeIncreaseTimeSeconds = other . ThrottleFullRangeIncreaseTimeSeconds ;
226223 ThrottleFullRangeDecreaseTimeSeconds = other . ThrottleFullRangeDecreaseTimeSeconds ;
227224 DynamicBrakeFullRangeIncreaseTimeSeconds = other . DynamicBrakeFullRangeIncreaseTimeSeconds ;
@@ -249,7 +246,6 @@ public CruiseControl(CruiseControl other, MSTSLocomotive locomotive)
249246 DisableCruiseControlOnThrottleAndZeroForce = other . DisableCruiseControlOnThrottleAndZeroForce ;
250247 DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed = other . DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed ;
251248 ForceResetRequiredAfterBraking = other . ForceResetRequiredAfterBraking ;
252- ForceResetIncludeDynamicBrake = other . ForceResetIncludeDynamicBrake ;
253249 ZeroSelectedSpeedWhenPassingToThrottleMode = other . ZeroSelectedSpeedWhenPassingToThrottleMode ;
254250 DynamicBrakeCommandHasPriorityOverCruiseControl = other . DynamicBrakeCommandHasPriorityOverCruiseControl ;
255251 TrainBrakeCommandHasPriorityOverCruiseControl = other . TrainBrakeCommandHasPriorityOverCruiseControl ;
@@ -285,7 +281,6 @@ public void Parse(STFReader stf)
285281 case "speedselectorsteptimeseconds" : SpeedSelectorStepTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 0.1f ) ; break ;
286282 case "throttlefullrangeincreasetimeseconds" : ThrottleFullRangeIncreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
287283 case "throttlefullrangedecreasetimeseconds" : ThrottleFullRangeDecreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
288- case "resetforceafteranybraking" : ResetForceAfterAnyBraking = stf . ReadBoolBlock ( false ) ; break ;
289284 case "dynamicbrakefullrangeincreasetimeseconds" : DynamicBrakeFullRangeIncreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
290285 case "dynamicbrakefullrangedecreasetimeseconds" : DynamicBrakeFullRangeDecreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
291286 case "trainbrakefullrangeincreasetimeseconds" : TrainBrakeFullRangeIncreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 10 ) ; break ;
@@ -346,7 +341,6 @@ public void Parse(STFReader stf)
346341 case "usethrottleasspeedselector" : UseThrottleAsSpeedSelector = stf . ReadBoolBlock ( false ) ; break ;
347342 case "usethrottleasforceselector" : UseThrottleAsForceSelector = stf . ReadBoolBlock ( false ) ; break ;
348343 case "forceresetrequiredafterbraking" : ForceResetRequiredAfterBraking = stf . ReadBoolBlock ( false ) ; break ;
349- case "forceresetincludedynamicbrake" : ForceResetIncludeDynamicBrake = stf . ReadBoolBlock ( false ) ; break ;
350344 case "zeroselectedspeedwhenpassingtothrottlemode" : ZeroSelectedSpeedWhenPassingToThrottleMode = stf . ReadBoolBlock ( false ) ; break ;
351345 case "dynamicbrakecommandhaspriorityovercruisecontrol" : DynamicBrakeCommandHasPriorityOverCruiseControl = stf . ReadBoolBlock ( true ) ; break ;
352346 case "trainbrakecommandhaspriorityovercruisecontrol" : TrainBrakeCommandHasPriorityOverCruiseControl = stf . ReadBoolBlock ( true ) ; break ;
@@ -513,7 +507,7 @@ public void Update(float elapsedClockSeconds)
513507 trainBrakePercent = 0 ;
514508 }
515509 else if ( ( Locomotive . TrainBrakeController . MaxPressurePSI - Locomotive . BrakeSystem . BrakeLine1PressurePSI > 1 ||
516- Locomotive . Train . BrakeLine4 > 0 ) && TrainBrakePriority && ! CCIsUsingTrainBrake && ( ! ( TrainBrakeCommandHasPriorityOverAcceleratingCruiseControl && CCThrottleOrDynBrakePercent <= 0 ) || TrainBrakeCommandHasPriorityOverCruiseControl ) )
510+ Locomotive . Train . BrakeLine4 > 0 ) && TrainBrakePriority && ! CCIsUsingTrainBrake && ( TrainBrakeCommandHasPriorityOverAcceleratingCruiseControl && ( CCThrottleOrDynBrakePercent > 0 || TrainBrakeCommandHasPriorityOverCruiseControl ) ) )
517511 {
518512 reducingForce = true ;
519513 timeFromEngineMoved = 0 ;
@@ -522,7 +516,7 @@ public void Update(float elapsedClockSeconds)
522516 }
523517 else if ( TrainBrakePriority && ( TrainBrakeCommandHasPriorityOverCruiseControl || TrainBrakeCommandHasPriorityOverAcceleratingCruiseControl && CCThrottleOrDynBrakePercent > 0 )
524518 || DynamicBrakePriority || ( ThrottleNeutralPosition && SelectedSpeedMpS == 0 ) || SelectedMaxAccelerationPercent == 0 ||
525- ( ForceResetRequiredAfterBraking && ( ! ( TrainBrakeCommandHasPriorityOverAcceleratingCruiseControl && CCThrottleOrDynBrakePercent <= 0 ) || TrainBrakeCommandHasPriorityOverCruiseControl ) &&
519+ ( ForceResetRequiredAfterBraking && ( TrainBrakeCommandHasPriorityOverAcceleratingCruiseControl && ( CCThrottleOrDynBrakePercent > 0 || TrainBrakeCommandHasPriorityOverCruiseControl ) ) &&
526520 ( ! WasForceReset || ( WasBraking && SelectedMaxAccelerationPercent > 0 ) ) ) )
527521 {
528522 if ( SpeedSelMode == SpeedSelectorMode . Parking )
@@ -1361,7 +1355,10 @@ public void CalculateRequiredForce(float elapsedClockSeconds, float AbsWheelSpee
13611355 if ( speedDiff < AntiWheelSpinSpeedDiffThreshold - 0.05f )
13621356 skidSpeedDegratation = 0 ;
13631357 if ( AntiWheelSpinEquipped ) CCThrottleOrDynBrakePercent = Math . Max ( CCThrottleOrDynBrakePercent - skidSpeedDegratation , 0 ) ;
1364- if ( breakout || Locomotive . TrainBrakeController . MaxPressurePSI - Locomotive . BrakeSystem . BrakeLine1PressurePSI > 1 )
1358+ if ( breakout || Locomotive . TrainBrakeController . MaxPressurePSI - Locomotive . BrakeSystem . BrakeLine1PressurePSI > 1
1359+ // Following commented line can enable traction also when train is braking
1360+ // && TrainBrakeCommandHasPriorityOverCruiseControl
1361+ )
13651362 {
13661363 CCThrottleOrDynBrakePercent = 0 ;
13671364 }
@@ -1400,7 +1397,7 @@ void SetTrainBrake(ref float brakePercent, float elapsedClockSeconds, float delt
14001397 {
14011398 if ( deltaSpeedMpS > - SpeedDeltaToEnableFullTrainBrake )
14021399 {
1403- bool dynamicBrakeAvailable = Locomotive . DynamicBrakeAvailable && Locomotive . LocomotivePowerSupply . DynamicBrakeAvailable && Locomotive . AbsSpeedMpS > Locomotive . DynamicBrakeSpeed1MpS ;
1400+ bool dynamicBrakeAvailable = Locomotive . DynamicBrakeAvailable && Locomotive . LocomotivePowerSupply . DynamicBrakeAvailable && UseDynBrake && Locomotive . AbsSpeedMpS > Locomotive . DynamicBrakeSpeed1MpS ;
14041401 if ( ! dynamicBrakeAvailable || deltaSpeedMpS < - SpeedDeltaToEnableTrainBrake )
14051402 {
14061403 CCIsUsingTrainBrake = true ;
0 commit comments