Avoid unnecessary viewport redrawing when (un)reserving signalled bridges
This commit is contained in:
@@ -104,8 +104,8 @@ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations)
|
|||||||
|
|
||||||
if (_settings_client.gui.show_track_reservation) {
|
if (_settings_client.gui.show_track_reservation) {
|
||||||
/* show the reserved rail if needed */
|
/* show the reserved rail if needed */
|
||||||
if (IsBridgeTile(tile)) {
|
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||||
MarkBridgeDirty(tile, VMDF_NOT_MAP_MODE);
|
MarkBridgeOrTunnelDirtyOnReservationChange(tile, VMDF_NOT_MAP_MODE);
|
||||||
} else {
|
} else {
|
||||||
MarkTileGroundDirtyByTile(tile, VMDF_NOT_MAP_MODE);
|
MarkTileGroundDirtyByTile(tile, VMDF_NOT_MAP_MODE);
|
||||||
}
|
}
|
||||||
@@ -199,8 +199,8 @@ void UnreserveRailTrack(TileIndex tile, Track t)
|
|||||||
assert_msg_tile(TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & TrackToTrackBits(t), tile, "track: %u", t);
|
assert_msg_tile(TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & TrackToTrackBits(t), tile, "track: %u", t);
|
||||||
|
|
||||||
if (_settings_client.gui.show_track_reservation) {
|
if (_settings_client.gui.show_track_reservation) {
|
||||||
if (IsBridgeTile(tile)) {
|
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||||
MarkBridgeDirty(tile, VMDF_NOT_MAP_MODE);
|
MarkBridgeOrTunnelDirtyOnReservationChange(tile, VMDF_NOT_MAP_MODE);
|
||||||
} else {
|
} else {
|
||||||
MarkTileGroundDirtyByTile(tile, VMDF_NOT_MAP_MODE);
|
MarkTileGroundDirtyByTile(tile, VMDF_NOT_MAP_MODE);
|
||||||
}
|
}
|
||||||
|
@@ -119,11 +119,15 @@ void MarkBridgeOrTunnelDirty(TileIndex tile, ViewportMarkDirtyFlags flags)
|
|||||||
void MarkBridgeOrTunnelDirtyOnReservationChange(TileIndex tile, ViewportMarkDirtyFlags flags)
|
void MarkBridgeOrTunnelDirtyOnReservationChange(TileIndex tile, ViewportMarkDirtyFlags flags)
|
||||||
{
|
{
|
||||||
if (IsTunnelBridgeWithSignalSimulation(tile)) {
|
if (IsTunnelBridgeWithSignalSimulation(tile)) {
|
||||||
|
if (IsBridge(tile)) {
|
||||||
MarkTileDirtyByTile(tile, flags);
|
MarkTileDirtyByTile(tile, flags);
|
||||||
|
} else {
|
||||||
|
MarkTileGroundDirtyByTile(tile, flags);
|
||||||
|
}
|
||||||
} else if (IsBridge(tile)) {
|
} else if (IsBridge(tile)) {
|
||||||
MarkBridgeDirty(tile, flags);
|
MarkBridgeDirty(tile, flags);
|
||||||
} else {
|
} else {
|
||||||
MarkTileDirtyByTile(tile, flags);
|
MarkTileGroundDirtyByTile(tile, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user