@@ -3848,8 +3848,9 @@ public void StartThrottleToZero(float? target)
38483848 /// </summary>
38493849 public void SetCombinedHandleValue ( float value )
38503850 {
3851+ bool ccUseCombinedControl = CruiseControl != null && ( CruiseControl . UseThrottleAsForceSelector || CruiseControl . UseThrottleAsSpeedSelector ) && CruiseControl . UseThrottleInCombinedControl ;
38513852 if ( CombinedControlType == CombinedControl . ThrottleDynamic && DynamicBrake && ! TrainControlSystem . FullDynamicBrakingOrder &&
3852- ! ( CruiseControl != null && ( CruiseControl . UseThrottleAsForceSelector || CruiseControl . UseThrottleAsSpeedSelector ) && CruiseControl . UseThrottleInCombinedControl && ! CruiseControl . DynamicBrakePriority && CruiseControl . SpeedRegMode == CruiseControl . SpeedRegulatorMode . Auto ) )
3853+ ! ( ccUseCombinedControl && ! CruiseControl . DynamicBrakePriority && CruiseControl . SpeedRegMode == CruiseControl . SpeedRegulatorMode . Auto ) )
38533854 {
38543855 if ( DynamicBrakeController . CurrentValue == 0 && value < CombinedControlSplitPosition )
38553856 DynamicBrakeChangeActiveState ( false ) ;
@@ -3862,12 +3863,15 @@ public void SetCombinedHandleValue(float value)
38623863 }
38633864 else
38643865 {
3865- if ( CombinedControlType == CombinedControl . ThrottleDynamic && ThrottleController . CurrentValue == 0 && value > CombinedControlSplitPosition )
3866+ bool canBrake = ThrottleController . CurrentValue == 0 ;
3867+ if ( ccUseCombinedControl && CruiseControl . SpeedRegMode == CruiseControl . SpeedRegulatorMode . Auto ) canBrake = ( CruiseControl . UseThrottleAsForceSelector && CruiseControl . SelectedMaxAccelerationPercent == 0 ) || ( CruiseControl . UseThrottleAsSpeedSelector && CruiseControl . SelectedSpeedMpS == 0 ) ;
3868+ if ( CombinedControlType == CombinedControl . ThrottleDynamic && canBrake && value > CombinedControlSplitPosition )
38663869 {
38673870 DynamicBrakeChangeActiveState ( true ) ;
3871+ if ( CruiseControl != null && CruiseControl . DynamicBrakeCommandHasPriorityOverCruiseControl ) CruiseControl . DynamicBrakePriority = true ;
38683872 }
38693873 else if ( DynamicBrakePercent < 0 || TrainControlSystem . FullDynamicBrakingOrder ||
3870- CruiseControl != null && ( CruiseControl . UseThrottleAsForceSelector || CruiseControl . UseThrottleAsSpeedSelector ) && CruiseControl . UseThrottleInCombinedControl && ! CruiseControl . DynamicBrakePriority && CruiseControl . SpeedRegMode == CruiseControl . SpeedRegulatorMode . Auto )
3874+ ( ! CruiseControl . DynamicBrakePriority && CruiseControl . SpeedRegMode == CruiseControl . SpeedRegulatorMode . Auto ) )
38713875 SetThrottleValue ( 1 - MathHelper . Clamp ( value , 0 , CombinedControlSplitPosition ) / CombinedControlSplitPosition ) ;
38723876 }
38733877 }
@@ -4562,6 +4566,10 @@ public void SetDynamicBrakeValue(float value)
45624566 if ( ! DynamicBrake && ThrottleController . CurrentValue == 0 && value > 0.05f )
45634567 {
45644568 DynamicBrakeChangeActiveState ( true ) ;
4569+ if ( CruiseControl != null && CruiseControl . SpeedRegMode == CruiseControl . SpeedRegulatorMode . Auto && CruiseControl . DynamicBrakeCommandHasPriorityOverCruiseControl )
4570+ {
4571+ CruiseControl . DynamicBrakePriority = true ;
4572+ }
45654573 }
45664574 if ( DynamicBrake && DynamicBrakeController . CurrentValue == 0 && value < - 0.05f )
45674575 {
0 commit comments