Skip to content

Commit 4701383

Browse files
committed
Fix combined control change by mouse
1 parent 6c8701f commit 4701383

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)