Merge branch 'signal_tunnels_bridges-sx' into jgrpp

Conflicts:
	src/tunnelbridge.h

(Fixup zoom level changes).
This commit is contained in:
Jonathan G Rennison
2015-11-01 14:07:55 +00:00
3 changed files with 21 additions and 4 deletions

View File

@@ -1091,10 +1091,11 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
} }
} }
} }
MarkTileDirtyByTile(tile); MarkBridgeOrTunnelDirty(tile);
MarkTileDirtyByTile(tile_exit);
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile));
AddSideToSignalBuffer(tile_exit, INVALID_DIAGDIR, GetTileOwner(tile));
YapfNotifyTrackLayoutChange(tile, track); YapfNotifyTrackLayoutChange(tile, track);
YapfNotifyTrackLayoutChange(tile_exit, track);
} }
return cost; return cost;
} }
@@ -1545,10 +1546,11 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
ClrBitTunnelBridgeSignal(end); ClrBitTunnelBridgeSignal(end);
_m[tile].m2 = 0; _m[tile].m2 = 0;
_m[end].m2 = 0; _m[end].m2 = 0;
MarkTileDirtyByTile(tile); MarkBridgeOrTunnelDirty(tile);
MarkTileDirtyByTile(end);
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile)); AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile));
AddSideToSignalBuffer(end, INVALID_DIAGDIR, GetTileOwner(tile));
YapfNotifyTrackLayoutChange(tile, track); YapfNotifyTrackLayoutChange(tile, track);
YapfNotifyTrackLayoutChange(end, track);
return CommandCost(EXPENSES_CONSTRUCTION, cost); return CommandCost(EXPENSES_CONSTRUCTION, cost);
} }

View File

@@ -16,6 +16,7 @@
void MarkBridgeDirty(TileIndex begin, TileIndex end, DiagDirection direction, uint bridge_height, const ZoomLevel mark_dirty_if_zoomlevel_is_below = ZOOM_LVL_END); void MarkBridgeDirty(TileIndex begin, TileIndex end, DiagDirection direction, uint bridge_height, const ZoomLevel mark_dirty_if_zoomlevel_is_below = ZOOM_LVL_END);
void MarkBridgeDirty(TileIndex tile, const ZoomLevel mark_dirty_if_zoomlevel_is_below = ZOOM_LVL_END); void MarkBridgeDirty(TileIndex tile, const ZoomLevel mark_dirty_if_zoomlevel_is_below = ZOOM_LVL_END);
void MarkBridgeOrTunnelDirty(TileIndex tile, const ZoomLevel mark_dirty_if_zoomlevel_is_below = ZOOM_LVL_END);
/** /**
* Calculates the length of a tunnel or a bridge (without end tiles) * Calculates the length of a tunnel or a bridge (without end tiles)

View File

@@ -80,6 +80,20 @@ void MarkBridgeDirty(TileIndex tile, const ZoomLevel mark_dirty_if_zoomlevel_is_
MarkBridgeDirty(tile, GetOtherTunnelBridgeEnd(tile), GetTunnelBridgeDirection(tile), GetBridgeHeight(tile), mark_dirty_if_zoomlevel_is_below); MarkBridgeDirty(tile, GetOtherTunnelBridgeEnd(tile), GetTunnelBridgeDirection(tile), GetBridgeHeight(tile), mark_dirty_if_zoomlevel_is_below);
} }
/**
* Mark bridge or tunnel tiles dirty.
* @param tile Bridge head or tunnel entrance.
*/
void MarkBridgeOrTunnelDirty(TileIndex tile, const ZoomLevel mark_dirty_if_zoomlevel_is_below)
{
if (IsBridge(tile)) {
MarkBridgeDirty(tile, mark_dirty_if_zoomlevel_is_below);
} else {
MarkTileDirtyByTile(tile, mark_dirty_if_zoomlevel_is_below);
MarkTileDirtyByTile(GetOtherTunnelBridgeEnd(tile), mark_dirty_if_zoomlevel_is_below);
}
}
/** Reset the data been eventually changed by the grf loaded. */ /** Reset the data been eventually changed by the grf loaded. */
void ResetBridges() void ResetBridges()
{ {