Signals: Add GRF restriction info bit for may reverse

This commit is contained in:
Jonathan G Rennison
2022-06-15 17:49:54 +01:00
parent 9cf33efe18
commit cf5eef515e
4 changed files with 21 additions and 2 deletions

View File

@@ -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