Add helper function to set tunnel/bridge entrance signal green

This commit is contained in:
Jonathan G Rennison
2021-08-27 23:40:53 +01:00
parent 55c4fe7d45
commit dc4b7e0558

View File

@@ -3346,6 +3346,14 @@ static int GetAndClearLastBridgeEntranceSetSignalIndex(TileIndex bridge_entrance
return 0; return 0;
} }
static void SetTunnelBridgeEntranceSignalGreen(TileIndex tile)
{
if (GetTunnelBridgeEntranceSignalState(tile) == SIGNAL_STATE_RED) {
SetTunnelBridgeEntranceSignalState(tile, SIGNAL_STATE_GREEN);
MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE);
}
}
static void HandleLastTunnelBridgeSignals(TileIndex tile, TileIndex end, DiagDirection dir, bool free) static void HandleLastTunnelBridgeSignals(TileIndex tile, TileIndex end, DiagDirection dir, bool free)
{ {
if (IsBridge(end) && _m[end].m2 != 0) { if (IsBridge(end) && _m[end].m2 != 0) {
@@ -3370,14 +3378,8 @@ static void HandleLastTunnelBridgeSignals(TileIndex tile, TileIndex end, DiagDir
if (redraw) MarkBridgeDirty(tile, end, GetTunnelBridgeDirection(tile), GetBridgeHeight(tile), VMDF_NOT_MAP_MODE); if (redraw) MarkBridgeDirty(tile, end, GetTunnelBridgeDirection(tile), GetBridgeHeight(tile), VMDF_NOT_MAP_MODE);
} }
if (IsTunnelBridgeSignalSimulationEntrance(end) && GetTunnelBridgeEntranceSignalState(end) == SIGNAL_STATE_RED) { if (IsTunnelBridgeSignalSimulationEntrance(end)) SetTunnelBridgeEntranceSignalGreen(end);
SetTunnelBridgeEntranceSignalState(end, SIGNAL_STATE_GREEN); if (IsTunnelBridgeSignalSimulationEntrance(tile)) SetTunnelBridgeEntranceSignalGreen(tile);
MarkTileDirtyByTile(end, VMDF_NOT_MAP_MODE);
}
if (IsTunnelBridgeSignalSimulationEntrance(tile) && GetTunnelBridgeEntranceSignalState(tile) == SIGNAL_STATE_RED) {
SetTunnelBridgeEntranceSignalState(tile, SIGNAL_STATE_GREEN);
MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE);
}
} }
} }
@@ -5027,10 +5029,7 @@ static void HandleSignalBehindTrain(Train *v, int signal_number)
if (tile == v->tile) { if (tile == v->tile) {
/* Flip signal on ramp. */ /* Flip signal on ramp. */
if (IsTunnelBridgeSignalSimulationEntrance(tile) && GetTunnelBridgeEntranceSignalState(tile) == SIGNAL_STATE_RED) { if (IsTunnelBridgeSignalSimulationEntrance(tile)) SetTunnelBridgeEntranceSignalGreen(tile);
SetTunnelBridgeEntranceSignalState(tile, SIGNAL_STATE_GREEN);
MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE);
}
} else if (IsBridge(v->tile) && signal_number >= 0) { } else if (IsBridge(v->tile) && signal_number >= 0) {
SetBridgeEntranceSimulatedSignalState(v->tile, signal_number, SIGNAL_STATE_GREEN); SetBridgeEntranceSimulatedSignalState(v->tile, signal_number, SIGNAL_STATE_GREEN);
MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE); MarkTileDirtyByTile(tile, VMDF_NOT_MAP_MODE);
@@ -5733,10 +5732,7 @@ static void SetSignalledBridgeTunnelGreenIfClear(TileIndex tile, TileIndex end)
SetAllBridgeEntranceSimulatedSignalsGreen(t); SetAllBridgeEntranceSimulatedSignalsGreen(t);
MarkBridgeDirty(t, VMDF_NOT_MAP_MODE); MarkBridgeDirty(t, VMDF_NOT_MAP_MODE);
} }
if (IsTunnelBridgeSignalSimulationEntrance(t) && GetTunnelBridgeEntranceSignalState(t) == SIGNAL_STATE_RED) { SetTunnelBridgeEntranceSignalGreen(t);
SetTunnelBridgeEntranceSignalState(t, SIGNAL_STATE_GREEN);
MarkTileDirtyByTile(t, VMDF_NOT_MAP_MODE);
}
} }
}; };
process_tile(tile); process_tile(tile);