Move signal style mask variables into a single struct

This commit is contained in:
Jonathan G Rennison
2022-06-25 10:18:48 +01:00
parent c1b54f1c31
commit 2f7664fc93
6 changed files with 38 additions and 41 deletions

View File

@@ -1531,7 +1531,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
if (convert_signal) return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS);
if (!(p2_signal_in && p2_signal_out)) {
cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] * ((GetTunnelBridgeLength(tile, tile_exit) + 4) >> 2) * (bidirectional ? 2 : 1)); // minimal 1
if (HasBit(_no_tunnel_bridge_style_mask, signal_style)) return_cmd_error(STR_ERROR_UNSUITABLE_SIGNAL_TYPE);
if (HasBit(_signal_style_masks.no_tunnel_bridge, signal_style)) return_cmd_error(STR_ERROR_UNSUITABLE_SIGNAL_TYPE);
if (!is_style_usable(sigvar, signal_style, bidirectional ? 0x11 : (is_pbs ? 0x21 : 0x1))) return_cmd_error(STR_ERROR_UNSUITABLE_SIGNAL_TYPE);
}
} else {
@@ -1550,7 +1550,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
will_be_style = signal_style;
will_be_pbs = is_pbs;
will_be_semaphore = (sigvar == SIG_SEMAPHORE);
if (HasBit(_no_tunnel_bridge_style_mask, signal_style)) return_cmd_error(STR_ERROR_UNSUITABLE_SIGNAL_TYPE);
if (HasBit(_signal_style_masks.no_tunnel_bridge, signal_style)) return_cmd_error(STR_ERROR_UNSUITABLE_SIGNAL_TYPE);
} else if (ctrl_pressed) {
will_be_bidi = false;
will_be_pbs = !will_be_pbs;
@@ -2815,7 +2815,7 @@ void DrawSingleSignal(TileIndex tile, const RailtypeInfo *rti, Track track, Sign
}
uint x, y;
GetSignalXY(tile, pos, HasBit(_signal_opposite_side_style_mask, style), x, y);
GetSignalXY(tile, pos, HasBit(_signal_style_masks.signal_opposite_side, style), x, y);
uint8 aspect;
if (condition == SIGNAL_STATE_GREEN) {
@@ -2967,8 +2967,8 @@ void MarkSingleSignalDirty(TileIndex tile, Trackdir td)
return;
}
bool opposite = false;
if (_signal_opposite_side_style_mask != 0) {
opposite = HasBit(_signal_opposite_side_style_mask, GetSignalStyleGeneric(tile, TrackdirToTrack(td)));
if (_signal_style_masks.signal_opposite_side != 0) {
opposite = HasBit(_signal_style_masks.signal_opposite_side, GetSignalStyleGeneric(tile, TrackdirToTrack(td)));
}
MarkSingleSignalDirtyIntl(tile, td, opposite, [td](uint x, uint y) -> uint {
return GetSaveSlopeZ(x, y, TrackdirToTrack(td));