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>
|
<dd>The signal is restricted (has a routing restriction program attached)</dd>
|
||||||
<dt>RESERVE_THROUGH_ALWAYS</dt>
|
<dt>RESERVE_THROUGH_ALWAYS</dt>
|
||||||
<dd>The attached routing restriction program unconditionally sets reserve through</dd>
|
<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>
|
</dl>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -428,6 +430,8 @@ item (FEAT_GLOBALVARS) {
|
|||||||
<dd>The signal is restricted (has a routing restriction program attached)</dd>
|
<dd>The signal is restricted (has a routing restriction program attached)</dd>
|
||||||
<dt>RESERVE_THROUGH_ALWAYS</dt>
|
<dt>RESERVE_THROUGH_ALWAYS</dt>
|
||||||
<dd>The attached routing restriction program unconditionally sets reserve through</dd>
|
<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>
|
</dl>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -583,6 +583,7 @@
|
|||||||
<tr><th>Bit</th><th>Value</th><th>Meaning</th></tr>
|
<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>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>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>
|
</table>
|
||||||
</p>
|
</p>
|
||||||
<p>See also: <a href="#railtype_enable_restricted_signals">railtype_enable_restricted_signals property</a></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><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>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>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>
|
</table>
|
||||||
</p>
|
</p>
|
||||||
<p>See also: <a href="#signals_enable_restricted_signals">signals_enable_restricted_signals property</a></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;
|
uint result = 1;
|
||||||
if ((prog->actions_used_flags & TRPAUF_RESERVE_THROUGH_ALWAYS) && !IsTileType(tile, MP_TUNNELBRIDGE)) result |= 2;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
@@ -1057,7 +1057,19 @@ CommandCost TraceRestrictProgram::Validate(const std::vector<TraceRestrictItem>
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TRIT_REVERSE:
|
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;
|
break;
|
||||||
|
|
||||||
case TRIT_SPEED_RESTRICTION:
|
case TRIT_SPEED_RESTRICTION:
|
||||||
@@ -1327,7 +1339,7 @@ void TraceRestrictCheckRefreshSignals(const TraceRestrictProgram *prog, TileInde
|
|||||||
{
|
{
|
||||||
if (_network_dedicated) return;
|
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
|
if (old_size == 0 && prog->refcount == 1) return; // Program is new, no need to refresh again
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user