@@ -88,6 +88,8 @@ public enum SpeedSelectorMode { Parking, Neutral, On, Start }
8888 public float ThrottleFullRangeDecreaseTimeSeconds = 6 ;
8989 public float DynamicBrakeFullRangeIncreaseTimeSeconds ;
9090 public float DynamicBrakeFullRangeDecreaseTimeSeconds ;
91+ public float TrainBrakeFullRangeIncreaseTimeSeconds = 10 ;
92+ public float TrainBrakeFullRangeDecreaseTimeSeconds = 5 ;
9193 public float ParkingBrakeEngageSpeed = 0 ;
9294 public float ParkingBrakePercent = 0 ;
9395 public bool SkipThrottleDisplay = false ;
@@ -209,6 +211,8 @@ public CruiseControl(CruiseControl other, MSTSLocomotive locomotive)
209211 ThrottleFullRangeDecreaseTimeSeconds = other . ThrottleFullRangeDecreaseTimeSeconds ;
210212 DynamicBrakeFullRangeIncreaseTimeSeconds = other . DynamicBrakeFullRangeIncreaseTimeSeconds ;
211213 DynamicBrakeFullRangeDecreaseTimeSeconds = other . DynamicBrakeFullRangeDecreaseTimeSeconds ;
214+ TrainBrakeFullRangeIncreaseTimeSeconds = other . TrainBrakeFullRangeIncreaseTimeSeconds ;
215+ TrainBrakeFullRangeDecreaseTimeSeconds = other . TrainBrakeFullRangeDecreaseTimeSeconds ;
212216 ParkingBrakeEngageSpeed = other . ParkingBrakeEngageSpeed ;
213217 ParkingBrakePercent = other . ParkingBrakePercent ;
214218 DisableZeroForceStep = other . DisableZeroForceStep ;
@@ -270,6 +274,8 @@ public void Parse(STFReader stf)
270274 case "resetforceafteranybraking" : ResetForceAfterAnyBraking = stf . ReadBoolBlock ( false ) ; break ;
271275 case "dynamicbrakefullrangeincreasetimeseconds" : DynamicBrakeFullRangeIncreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
272276 case "dynamicbrakefullrangedecreasetimeseconds" : DynamicBrakeFullRangeDecreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
277+ case "trainbrakefullrangeincreasetimeseconds" : TrainBrakeFullRangeIncreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 10 ) ; break ;
278+ case "trainbrakefullrangedecreasetimeseconds" : TrainBrakeFullRangeDecreaseTimeSeconds = stf . ReadFloatBlock ( STFReader . UNITS . Any , 5 ) ; break ;
273279 case "parkingbrakeengagespeed" : ParkingBrakeEngageSpeed = stf . ReadFloatBlock ( STFReader . UNITS . Speed , 0 ) ; break ;
274280 case "parkingbrakepercent" : ParkingBrakePercent = stf . ReadFloatBlock ( STFReader . UNITS . Any , 0 ) ; break ;
275281 case "maxpowerthreshold" : MaxPowerThreshold = stf . ReadFloatBlock ( STFReader . UNITS . Any , 0 ) ; break ;
@@ -1361,9 +1367,9 @@ void SetTrainBrake(ref float brakePercent, float elapsedClockSeconds, float delt
13611367 {
13621368 CCIsUsingTrainBrake = true ;
13631369 if ( RelativeAccelerationMpSS > - MaxDecelerationMpSS + 0.01f )
1364- brakePercent += 10 * elapsedClockSeconds ;
1370+ brakePercent += 100 / TrainBrakeFullRangeIncreaseTimeSeconds * elapsedClockSeconds ;
13651371 else if ( RelativeAccelerationMpSS < - MaxDecelerationMpSS - 0.01f )
1366- brakePercent -= 20 * elapsedClockSeconds ;
1372+ brakePercent -= 100 / TrainBrakeFullRangeDecreaseTimeSeconds * elapsedClockSeconds ;
13671373 brakePercent = MathHelper . Clamp ( brakePercent , TrainBrakeMinPercentValue - 3.0f , TrainBrakeMaxPercentValue ) ;
13681374 }
13691375 }
0 commit comments