Signals: Add GRF restriction info bit for may reverse
This commit is contained in:
@@ -116,6 +116,8 @@
|
||||
<dd>The signal is restricted (has a routing restriction program attached)</dd>
|
||||
<dt>RESERVE_THROUGH_ALWAYS</dt>
|
||||
<dd>The attached routing restriction program unconditionally sets reserve through</dd>
|
||||
<dt>MAY_REVERSE</dt>
|
||||
<dd>The attached routing restriction program may allow trains to reverse behind this signal</dd>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -428,6 +430,8 @@ item (FEAT_GLOBALVARS) {
|
||||
<dd>The signal is restricted (has a routing restriction program attached)</dd>
|
||||
<dt>RESERVE_THROUGH_ALWAYS</dt>
|
||||
<dd>The attached routing restriction program unconditionally sets reserve through</dd>
|
||||
<dt>MAY_REVERSE</dt>
|
||||
<dd>The attached routing restriction program may allow trains to reverse behind this signal</dd>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
|
@@ -583,6 +583,7 @@
|
||||
<tr><th>Bit</th><th>Value</th><th>Meaning</th></tr>
|
||||
<tr><td>0</td><td>1</td><td>This signal has a routing restriction program attached</td></tr>
|
||||
<tr><td>1</td><td>2</td><td>Reserve through is unconditionally set in the routing restriction program</td></tr>
|
||||
<tr><td>2</td><td>4</td><td>The routing restriction program may allow trains to reverse behind this signal</td></tr>
|
||||
</table>
|
||||
</p>
|
||||
<p>See also: <a href="#railtype_enable_restricted_signals">railtype_enable_restricted_signals property</a></p>
|
||||
@@ -605,6 +606,7 @@
|
||||
<tr><th>Bit</th><th>Value</th><th>Meaning</th></tr>
|
||||
<tr><td>0</td><td>1</td><td>This signal has a routing restriction program attached</td></tr>
|
||||
<tr><td>1</td><td>2</td><td>Reserve through is unconditionally set in the routing restriction program</td></tr>
|
||||
<tr><td>2</td><td>4</td><td>The routing restriction program may allow trains to reverse behind this signal</td></tr>
|
||||
</table>
|
||||
</p>
|
||||
<p>See also: <a href="#signals_enable_restricted_signals">signals_enable_restricted_signals property</a></p>
|
||||
|
@@ -78,5 +78,6 @@ uint GetNewSignalsRestrictedSignalsInfo(const TraceRestrictProgram *prog, TileIn
|
||||
|
||||
uint result = 1;
|
||||
if ((prog->actions_used_flags & TRPAUF_RESERVE_THROUGH_ALWAYS) && !IsTileType(tile, MP_TUNNELBRIDGE)) result |= 2;
|
||||
if ((prog->actions_used_flags & TRPAUF_REVERSE) && !IsTileType(tile, MP_TUNNELBRIDGE)) result |= 4;
|
||||
return result;
|
||||
}
|
||||
|
@@ -1057,7 +1057,19 @@ CommandCost TraceRestrictProgram::Validate(const std::vector<TraceRestrictItem>
|
||||
break;
|
||||
|
||||
case TRIT_REVERSE:
|
||||
actions_used_flags |= TRPAUF_REVERSE;
|
||||
switch (static_cast<TraceRestrictReverseValueField>(GetTraceRestrictValue(item))) {
|
||||
case TRRVF_REVERSE:
|
||||
actions_used_flags |= TRPAUF_REVERSE;
|
||||
break;
|
||||
|
||||
case TRRVF_CANCEL_REVERSE:
|
||||
if (condstack.empty()) actions_used_flags &= ~TRPAUF_REVERSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
NOT_REACHED();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case TRIT_SPEED_RESTRICTION:
|
||||
@@ -1327,7 +1339,7 @@ void TraceRestrictCheckRefreshSignals(const TraceRestrictProgram *prog, TileInde
|
||||
{
|
||||
if (_network_dedicated) return;
|
||||
|
||||
if (!((old_actions_used_flags ^ prog->actions_used_flags) & TRPAUF_RESERVE_THROUGH_ALWAYS)) return;
|
||||
if (!((old_actions_used_flags ^ prog->actions_used_flags) & (TRPAUF_RESERVE_THROUGH_ALWAYS | TRPAUF_REVERSE))) return;
|
||||
|
||||
if (old_size == 0 && prog->refcount == 1) return; // Program is new, no need to refresh again
|
||||
|
||||
|
Reference in New Issue
Block a user