Skip to content

Commit 6c8701f

Browse files
committed
Fix bugs regarding force selector
1 parent 966a61c commit 6c8701f

File tree

7 files changed

+210
-202
lines changed

7 files changed

+210
-202
lines changed

Source/Orts.Simulation/Simulation/Confirmer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ public enum CabControl {
100100
, Odometer
101101
, Battery
102102
, MasterKey
103+
// Cruise control
104+
, MaxAcceleration
105+
, RestrictedSpeedZone
103106
// Train Devices
104107
, DoorsLeft
105108
, DoorsRight
@@ -245,6 +248,9 @@ public Confirmer(Simulator simulator, double defaultDurationS)
245248
, new string [] { GetString("Odometer"), null, null, GetParticularString("Odometer", "reset"), GetParticularString("Odometer", "counting down"), GetParticularString("Odometer", "counting up") }
246249
, new string [] { GetString("Battery"), GetString("off"), null, GetString("on") }
247250
, new string [] { GetString("Master key"), GetString("off"), null, GetString("on") }
251+
// Cruise control
252+
, new string [] { GetString("Max acceleration"), null, null, null }
253+
, new string [] { GetString("Restricted speed zone"), GetString("off"), null, GetString("on") }
248254
// Train Devices
249255
, new string [] { GetString("Doors Left"), GetString("close"), null, GetString("open") }
250256
, new string [] { GetString("Doors Right"), GetString("close"), null, GetString("open") }

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3333,7 +3333,7 @@ public void StartThrottleIncrease(float? target)
33333333
if (CruiseControl.ZeroSelectedSpeedWhenPassingToThrottleMode) CruiseControl.SetSpeed(0);
33343334
CruiseControl.SpeedRegMode = CruiseControl.SpeedRegulatorMode.Manual;
33353335
}
3336-
if (CruiseControl.DisableCruiseControlOnThrottleAndZeroForce && CruiseControl.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto)
3336+
if (CruiseControl.DisableCruiseControlOnThrottleAndZeroForce && CruiseControl.SelectedMaxAccelerationPercent == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto)
33373337
{
33383338
if (CruiseControl.ZeroSelectedSpeedWhenPassingToThrottleMode) CruiseControl.SetSpeed(0);
33393339
CruiseControl.SpeedRegMode = CruiseControl.SpeedRegulatorMode.Manual;
@@ -3344,7 +3344,7 @@ public void StartThrottleIncrease(float? target)
33443344
return;
33453345
}
33463346
if (CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed && CruiseControl.SelectedSpeedMpS == 0 &&
3347-
CruiseControl.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto)
3347+
CruiseControl.SelectedMaxAccelerationPercent == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto)
33483348
{
33493349
if (CruiseControl.ZeroSelectedSpeedWhenPassingToThrottleMode) CruiseControl.SetSpeed(0);
33503350
CruiseControl.SpeedRegMode = CruiseControl.SpeedRegulatorMode.Manual;
@@ -3363,10 +3363,10 @@ public void StartThrottleIncrease(float? target)
33633363

33643364
public void StartThrottleIncrease()
33653365
{
3366-
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationStep != 0
3366+
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationPercent != 0
33673367
&& CruiseControl.HasIndependentThrottleDynamicBrakeLever)
33683368
return;
3369-
if ((CruiseControl?.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) &&
3369+
if ((CruiseControl?.SelectedMaxAccelerationPercent == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) &&
33703370
(CruiseControl.DisableCruiseControlOnThrottleAndZeroForce || CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed && CruiseControl.SelectedSpeedMpS == 0))
33713371
{
33723372
if (CruiseControl.ZeroSelectedSpeedWhenPassingToThrottleMode) CruiseControl.SetSpeed(0);
@@ -3493,10 +3493,10 @@ public void StartThrottleDecrease(float? target)
34933493
protected bool speedSelectorModeDecreasing = false;
34943494
public void StartThrottleDecrease()
34953495
{
3496-
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationStep != 0
3496+
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationPercent != 0
34973497
&& CruiseControl.HasIndependentThrottleDynamicBrakeLever)
34983498
return;
3499-
if ((CruiseControl?.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) &&
3499+
if ((CruiseControl?.SelectedMaxAccelerationPercent == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) &&
35003500
(CruiseControl.DisableCruiseControlOnThrottleAndZeroForce || CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed && CruiseControl.SelectedSpeedMpS == 0))
35013501
{
35023502
if (CruiseControl.ZeroSelectedSpeedWhenPassingToThrottleMode) CruiseControl.SetSpeed(0);
@@ -3520,7 +3520,7 @@ public void StartThrottleDecrease()
35203520
{
35213521
if (CruiseControl.UseThrottleAsForceSelector && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto &&
35223522
!(CruiseControl.DynamicBrakeCommandHasPriorityOverCruiseControl && (CruiseControl.DynamicBrakePriority ||
3523-
(CruiseControl.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0))))
3523+
CruiseControl.SelectedMaxAccelerationPercent == 0)))
35243524
{
35253525
CruiseControl.SpeedRegulatorMaxForceStartDecrease();
35263526
return;
@@ -3575,7 +3575,7 @@ public void StopThrottleDecrease()
35753575
if (CombinedControlType == CombinedControl.None || CruiseControl.UseThrottleInCombinedControl)
35763576
{
35773577
if (CruiseControl.UseThrottleAsForceSelector && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto
3578-
&& (CruiseControl.SelectedMaxAccelerationPercent > 0 || CruiseControl.SelectedMaxAccelerationStep > 0))
3578+
&& CruiseControl.SelectedMaxAccelerationPercent > 0)
35793579
{
35803580
CruiseControl.SpeedRegulatorMaxForceStopDecrease();
35813581
return;
@@ -3687,7 +3687,7 @@ public void ToggleWaterScoop()
36873687
/// </summary>
36883688
public void ThrottleChangeTo(bool increase, float? target)
36893689
{
3690-
if ((CruiseControl != null && target != 0 && CruiseControl.SelectedMaxAccelerationStep <= 0
3690+
if ((CruiseControl != null && target != 0 && CruiseControl.SelectedMaxAccelerationPercent <= 0
36913691
&& ThrottleController.CurrentValue == 0 && DynamicBrakeController.CurrentValue == 0) &&
36923692
(CruiseControl.DisableCruiseControlOnThrottleAndZeroForce || CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed && CruiseControl.SelectedSpeedMpS == 0))
36933693
{
@@ -3786,10 +3786,10 @@ public void SetThrottlePercentWithSound(float percent)
37863786

37873787
public void ThrottleToZero()
37883788
{
3789-
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationStep != 0
3789+
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationPercent != 0
37903790
&& CruiseControl.HasIndependentThrottleDynamicBrakeLever)
37913791
return;
3792-
if ((CruiseControl?.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) &&
3792+
if ((CruiseControl?.SelectedMaxAccelerationPercent == 0 && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto) &&
37933793
(CruiseControl.DisableCruiseControlOnThrottleAndZeroForce || CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed && CruiseControl.SelectedSpeedMpS == 0))
37943794
{
37953795
if (CruiseControl.ZeroSelectedSpeedWhenPassingToThrottleMode) CruiseControl.SetSpeed(0);
@@ -3880,12 +3880,12 @@ public void SetCombinedHandleValue(float value)
38803880
/// <returns>Combined position into 0-1 range, where arrangement is [[1--throttle--0]split[0--dynamic|airbrake--1]]</returns>
38813881
public float GetCombinedHandleValue(bool intermediateValue)
38823882
{
3883-
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationStep != 0
3883+
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.SelectedMaxAccelerationPercent != 0
38843884
&& CruiseControl.HasIndependentThrottleDynamicBrakeLever)
38853885
return CombinedControlSplitPosition;
38863886
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.UseThrottleAsForceSelector && CruiseControl.UseThrottleInCombinedControl && !CruiseControl.DynamicBrakePriority
38873887
&& CombinedControlType == CombinedControl.ThrottleDynamic)
3888-
return CombinedControlSplitPosition * (1 - (CruiseControl.SelectedMaxAccelerationStep / CruiseControl.SpeedRegulatorMaxForceSteps));
3888+
return CombinedControlSplitPosition * (1 - (CruiseControl.SelectedMaxAccelerationPercent / 100));
38893889
if (CruiseControl?.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && CruiseControl.UseThrottleAsSpeedSelector && CruiseControl.UseThrottleInCombinedControl && !CruiseControl.DynamicBrakePriority
38903890
&& CombinedControlType == CombinedControl.ThrottleDynamic)
38913891
return CombinedControlSplitPosition * (1 - (CruiseControl.SelectedSpeedMpS / MaxSpeedMpS));
@@ -3917,7 +3917,7 @@ public float GetCombinedHandleValue(bool intermediateValue)
39173917
else if (CruiseControl.UseThrottleAsSpeedSelector)
39183918
return CombinedControlSplitPosition * (1 - (CruiseControl.SelectedSpeedMpS / MaxSpeedMpS));
39193919
else if (CruiseControl.UseThrottleAsForceSelector && CruiseControl.UseThrottleInCombinedControl)
3920-
return CombinedControlSplitPosition * (1 - (CruiseControl.SelectedMaxAccelerationStep / CruiseControl.SpeedRegulatorMaxForceSteps));
3920+
return CombinedControlSplitPosition * (1 - (CruiseControl.SelectedMaxAccelerationPercent / 100));
39213921
else
39223922
return CombinedControlSplitPosition;
39233923

@@ -4473,7 +4473,7 @@ public void StartDynamicBrakeIncrease(float? target)
44734473
{
44744474
AlerterReset(TCSEvent.DynamicBrakeChanged);
44754475
if (CruiseControl != null && CruiseControl.SpeedRegMode == CruiseControl.SpeedRegulatorMode.Auto && (CruiseControl.DynamicBrakeCommandHasPriorityOverCruiseControl ||
4476-
(CruiseControl.DisableCruiseControlOnThrottleAndZeroForce && CruiseControl.SelectedMaxAccelerationPercent == 0 && CruiseControl.SelectedMaxAccelerationStep == 0)))
4476+
(CruiseControl.DisableCruiseControlOnThrottleAndZeroForce && CruiseControl.SelectedMaxAccelerationPercent == 0)))
44774477
{
44784478
ThrottlePercent = 0;
44794479
CruiseControl.DynamicBrakePriority = true;

Source/Orts.Simulation/Simulation/RollingStocks/SubSystems/Controllers/MultiPositionController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ public void Update(float elapsedClockSeconds)
423423
if (controllerPosition == ControllerPosition.SelectedSpeedIncrease)
424424
{
425425
if (Locomotive.CruiseControl.ForceRegulatorAutoWhenNonZeroSpeedSelectedAndThrottleAtZero &&
426-
Locomotive.CruiseControl.SelectedMaxAccelerationStep == 0 && Locomotive.CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed &&
426+
Locomotive.CruiseControl.SelectedMaxAccelerationPercent == 0 && Locomotive.CruiseControl.DisableCruiseControlOnThrottleAndZeroForceAndZeroSpeed &&
427427
Locomotive.ThrottleController.CurrentValue == 0 && Locomotive.DynamicBrakeController.CurrentValue == 0)
428428
{
429429
Locomotive.CruiseControl.SpeedRegMode = CruiseControl.SpeedRegulatorMode.Auto;

0 commit comments

Comments
 (0)