Skip to content

Commit 36dcd19

Browse files
committed
Allow manual call on from advanced signal
1 parent feff309 commit 36dcd19

File tree

3 files changed

+8
-24
lines changed

3 files changed

+8
-24
lines changed

Source/Orts.Simulation/Simulation/Physics/Train.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,6 @@ public enum TRAINTYPE
227227
public int IndexNextSignal = -1; // Index in SignalObjectItems for next signal
228228
public int IndexNextSpeedlimit = -1; // Index in SignalObjectItems for next speedpost
229229
public SignalObject[] NextSignalObject = new SignalObject[2]; // direct reference to next signal
230-
public SignalObject AllowedCallOnSignal; // Signal for which train has call on allowed by dispatcher
231230

232231
// Local max speed independently from signal and speedpost speed;
233232
// depends from various parameters like route max speed, overall or section efficiency of service,
@@ -2893,8 +2892,6 @@ public void UpdateManual(float elapsedClockSeconds)
28932892
// system will take back control of the signal
28942893
if (signalObject.holdState == SignalObject.HoldState.ManualPass ||
28952894
signalObject.holdState == SignalObject.HoldState.ManualApproach) signalObject.holdState = SignalObject.HoldState.None;
2896-
2897-
AllowedCallOnSignal = null;
28982895
}
28992896
UpdateSectionStateManual(); // update track occupation //
29002897
UpdateManualMode(SignalObjIndex); // update route clearance //
@@ -2922,8 +2919,6 @@ public void UpdateExplorer(float elapsedClockSeconds)
29222919
// system will take back control of the signal
29232920
if (signalObject.holdState == SignalObject.HoldState.ManualPass ||
29242921
signalObject.holdState == SignalObject.HoldState.ManualApproach) signalObject.holdState = SignalObject.HoldState.None;
2925-
2926-
AllowedCallOnSignal = null;
29272922
}
29282923
UpdateSectionStateExplorer(); // update track occupation //
29292924
UpdateExplorerMode(SignalObjIndex); // update route clearance //
@@ -7457,8 +7452,6 @@ public void UpdateRouteClearanceAhead(int signalObjectIndex, int backward, float
74577452
signalObject.holdState = SignalObject.HoldState.None;
74587453
}
74597454

7460-
AllowedCallOnSignal = null;
7461-
74627455
signalObject.resetSignalEnabled();
74637456
}
74647457
}
@@ -7610,9 +7603,6 @@ public bool CheckStoppedTrains(TCSubpathRoute thisRoute)
76107603

76117604
public virtual bool TestCallOn(SignalObject thisSignal, bool allowOnNonePlatform, TCSubpathRoute thisRoute, string dumpfile)
76127605
{
7613-
if (AllowedCallOnSignal == thisSignal)
7614-
return true;
7615-
76167606
bool intoPlatform = false;
76177607

76187608
foreach (Train.TCRouteElement routeElement in thisSignal.signalRoute)
@@ -7957,8 +7947,6 @@ public void UpdateManualMode(int signalObjectIndex)
79577947
if (thisSignal.holdState == SignalObject.HoldState.ManualPass ||
79587948
thisSignal.holdState == SignalObject.HoldState.ManualApproach) thisSignal.holdState = SignalObject.HoldState.None;
79597949

7960-
AllowedCallOnSignal = null;
7961-
79627950
thisSignal.resetSignalEnabled();
79637951
}
79647952

Source/Orts.Simulation/Simulation/Signalling/Signals.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8417,6 +8417,7 @@ public enum HoldState // signal is locked in hold
84178417
private InternalBlockstate internalBlockState = InternalBlockstate.Open; // internal blockstate
84188418
public Permission hasPermission = Permission.Denied; // Permission to pass red signal
84198419
public HoldState holdState = HoldState.None;
8420+
public bool CallOnManuallyAllowed;
84208421

84218422
public List<int> sigfound = new List<int>(); // active next signal - used for signals with NORMAL heads only
84228423
public int reqNormalSignal = -1; // ref of normal signal requesting route clearing (only used for signals without NORMAL heads)
@@ -10110,8 +10111,8 @@ public void Update()
1011010111
public void resetSignalEnabled()
1011110112
{
1011210113
// reset train information
10113-
1011410114
enabledTrain = null;
10115+
CallOnManuallyAllowed = false;
1011510116
trainRouteDirectionIndex = 0;
1011610117
signalRoute.Clear();
1011710118
fullRoute = hasFixedRoute;
@@ -12196,7 +12197,7 @@ public bool TrainHasCallOn(bool allowOnNonePlatform, bool allowAdvancedSignal, s
1219612197

1219712198
if (enabledTrain.Train != null && signalRoute != null)
1219812199
{
12199-
bool callOnValid = enabledTrain.Train.TestCallOn(this, allowOnNonePlatform, signalRoute, dumpfile);
12200+
bool callOnValid = CallOnManuallyAllowed || enabledTrain.Train.TestCallOn(this, allowOnNonePlatform, signalRoute, dumpfile);
1220012201
return (callOnValid);
1220112202
}
1220212203

@@ -12720,12 +12721,12 @@ public void SetManualCallOn(bool state)
1272012721
{
1272112722
if (state && CallOnEnabled)
1272212723
{
12723-
enabledTrain.Train.AllowedCallOnSignal = this;
1272412724
clearHoldSignalDispatcher();
12725+
CallOnManuallyAllowed = true;
1272512726
}
12726-
else if (enabledTrain.Train.AllowedCallOnSignal == this)
12727+
else
1272712728
{
12728-
enabledTrain.Train.AllowedCallOnSignal = null;
12729+
CallOnManuallyAllowed = false;
1272912730
}
1273012731
}
1273112732
}

Source/RunActivity/Viewer3D/Debugging/DebugViewerForm.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1547,13 +1547,8 @@ private void HandlePickedSignal()
15471547
boxSetSignal.Items.RemoveAt(4);
15481548

15491549
if (signalPickedItem.Signal.enabledTrain != null && signalPickedItem.Signal.CallOnEnabled)
1550-
{
1551-
if (signalPickedItem.Signal.enabledTrain.Train.AllowedCallOnSignal != signalPickedItem.Signal)
1552-
boxSetSignal.Items.Add("Enable call on");
1553-
/*else
1554-
boxSetSignal.Items.Add("Disable call on");*/
1555-
// To disable Call On signal must be manually set to stop, to avoid signal state change
1556-
// in the interval between this list is shown and the option is selected by dispatcher
1550+
{
1551+
if (!signalPickedItem.Signal.CallOnManuallyAllowed) boxSetSignal.Items.Add("Allow call on");
15571552
}
15581553

15591554
boxSetSignal.Location = new System.Drawing.Point(LastCursorPosition.X + 2, y);

0 commit comments

Comments
 (0)