Skip to content

Commit

Permalink
Fix combined control change by mouse
Browse files Browse the repository at this point in the history
  • Loading branch information
cesarBLG committed Oct 14, 2022
1 parent 6c8701f commit 4701383
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions Source/Orts.Simulation/Simulation/RollingStocks/MSTSLocomotive.cs
Expand Up @@ -3848,8 +3848,9 @@ public void StartThrottleToZero(float? target)
/// </summary>
public void SetCombinedHandleValue(float value)
{
bool ccUseCombinedControl = CruiseControl != null && (CruiseControl.UseThrottleAsForceSelector || CruiseControl.UseThrottleAsSpeedSelector ) && CruiseControl.UseThrottleInCombinedControl;
if (CombinedControlType == CombinedControl.ThrottleDynamic && DynamicBrake && !TrainControlSystem.FullDynamicBrakingOrder &&
!(CruiseControl != null && (CruiseControl.UseThrottleAsForceSelector || CruiseControl.UseThrottleAsSpeedSelector) && CruiseControl.UseThrottleInCombinedControl && !CruiseControl.DynamicBrakePriority && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto))
!(ccUseCombinedControl && !CruiseControl.DynamicBrakePriority && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto))
{
if (DynamicBrakeController.CurrentValue == 0 && value < CombinedControlSplitPosition)
DynamicBrakeChangeActiveState(false);
Expand All @@ -3862,12 +3863,15 @@ public void SetCombinedHandleValue(float value)
}
else
{
if (CombinedControlType == CombinedControl.ThrottleDynamic && ThrottleController.CurrentValue == 0 && value > CombinedControlSplitPosition)
bool canBrake = ThrottleController.CurrentValue == 0;
if (ccUseCombinedControl && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) canBrake = (CruiseControl.UseThrottleAsForceSelector && CruiseControl.SelectedMaxAccelerationPercent == 0) || (CruiseControl.UseThrottleAsSpeedSelector && CruiseControl.SelectedSpeedMpS == 0);
if (CombinedControlType == CombinedControl.ThrottleDynamic && canBrake && value > CombinedControlSplitPosition)
{
DynamicBrakeChangeActiveState(true);
if (CruiseControl != null && CruiseControl.DynamicBrakeCommandHasPriorityOverCruiseControl) CruiseControl.DynamicBrakePriority = true;
}
else if (DynamicBrakePercent < 0 || TrainControlSystem.FullDynamicBrakingOrder ||
CruiseControl != null && (CruiseControl.UseThrottleAsForceSelector || CruiseControl.UseThrottleAsSpeedSelector ) && CruiseControl.UseThrottleInCombinedControl && !CruiseControl.DynamicBrakePriority && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto)
(!CruiseControl.DynamicBrakePriority && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto))
SetThrottleValue(1 - MathHelper.Clamp(value, 0, CombinedControlSplitPosition) / CombinedControlSplitPosition);
}
}
Expand Down Expand Up @@ -4562,6 +4566,10 @@ public void SetDynamicBrakeValue(float value)
if (!DynamicBrake && ThrottleController.CurrentValue == 0 && value > 0.05f)
{
DynamicBrakeChangeActiveState(true);
if (CruiseControl != null && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.DynamicBrakeCommandHasPriorityOverCruiseControl)
{
CruiseControl.DynamicBrakePriority = true;
}
}
if (DynamicBrake && DynamicBrakeController.CurrentValue == 0 && value < -0.05f)
{
Expand Down

0 comments on commit 4701383

Please sign in to comment.