From 2cec059248b7f81d352c9e07e65fe1414fdc026d Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 27 Jul 2008 09:16:23 +0000 Subject: (svn r13846) -Fix (r13838): Do not draw water borders inside of industries. --- src/water_cmd.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/water_cmd.cpp') diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index db6872178..f409c250e 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -536,11 +536,29 @@ static bool IsWateredTile(TileIndex tile, Direction from) return false; case MP_STATION: - if (IsOilRig(tile)) return GetWaterClass(tile) != WATER_CLASS_INVALID; + if (IsOilRig(tile)) { + /* Do not draw waterborders inside of industries. + * Note: There is no easy way to detect the industry of an oilrig tile. */ + TileIndex src_tile = tile + TileOffsByDir(from); + if ((IsTileType(src_tile, MP_STATION) && IsOilRig(src_tile)) || + (IsTileType(src_tile, MP_INDUSTRY))) return true; + + return GetWaterClass(tile) != WATER_CLASS_INVALID; + } return (IsDock(tile) && GetTileSlope(tile, NULL) == SLOPE_FLAT) || IsBuoy(tile); - case MP_INDUSTRY: return IsIndustryTileOnWater(tile); + case MP_INDUSTRY: { + /* Do not draw waterborders inside of industries. + * Note: There is no easy way to detect the industry of an oilrig tile. */ + TileIndex src_tile = tile + TileOffsByDir(from); + if ((IsTileType(src_tile, MP_STATION) && IsOilRig(src_tile)) || + (IsTileType(src_tile, MP_INDUSTRY) && GetIndustryIndex(src_tile) == GetIndustryIndex(tile))) return true; + + return IsIndustryTileOnWater(tile); + } + case MP_TUNNELBRIDGE: return GetTunnelBridgeTransportType(tile) == TRANSPORT_WATER && ReverseDiagDir(GetTunnelBridgeDirection(tile)) == DirToDiagDir(from); + default: return false; } } -- cgit v1.2.3-54-g00ecf