Fix middle of bridge not being redrawn when adding removing signals.

pull/3/head
Jonathan G Rennison 9 years ago
parent e07e4fdb8e
commit b3e03e8cf9

@ -1090,8 +1090,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
}
}
}
MarkTileDirtyByTile(tile);
MarkTileDirtyByTile(tile_exit);
MarkBridgeOrTunnelDirty(tile);
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile));
YapfNotifyTrackLayoutChange(tile, track);
}
@ -1538,8 +1537,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
ClrBitTunnelBridgeSignal(end);
_m[tile].m2 = 0;
_m[end].m2 = 0;
MarkTileDirtyByTile(tile);
MarkTileDirtyByTile(end);
MarkBridgeOrTunnelDirty(tile);
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile));
YapfNotifyTrackLayoutChange(tile, track);
return CommandCost(EXPENSES_CONSTRUCTION, cost);

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

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

Loading…
Cancel
Save