(svn r13476) -Fix: draw canal borders for locks and when directly next to a aquaduct entrace but under the aqueduct.
authorrubidium
Wed, 11 Jun 2008 16:22:07 +0000
changeset 10923 842202a91c35
parent 10922 6ca169cfe005
child 10924 57ef3224806e
(svn r13476) -Fix: draw canal borders for locks and when directly next to a aquaduct entrace but under the aqueduct.
src/water_cmd.cpp
--- a/src/water_cmd.cpp	Wed Jun 11 15:56:55 2008 +0000
+++ b/src/water_cmd.cpp	Wed Jun 11 16:22:07 2008 +0000
@@ -483,13 +483,19 @@
 {
 	switch (GetTileType(tile)) {
 		case MP_WATER:
-			if (!IsCoast(tile)) return true;
-			switch (GetTileSlope(tile, NULL)) {
-				case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
-				case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
-				case SLOPE_E: return (from == DIR_NW) || (from == DIR_W) || (from == DIR_SW);
-				case SLOPE_N: return (from == DIR_SW) || (from == DIR_S) || (from == DIR_SE);
-				default: return false;
+			switch (GetWaterTileType(tile)) {
+				default: NOT_REACHED();
+				case WATER_TILE_DEPOT: case WATER_TILE_CLEAR: return true;
+				case WATER_TILE_LOCK: return DiagDirToAxis(GetLockDirection(tile)) == DiagDirToAxis(DirToDiagDir(from));
+
+				case WATER_TILE_COAST:
+					switch (GetTileSlope(tile, NULL)) {
+						case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
+						case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
+						case SLOPE_E: return (from == DIR_NW) || (from == DIR_W) || (from == DIR_SW);
+						case SLOPE_N: return (from == DIR_SW) || (from == DIR_S) || (from == DIR_SE);
+						default: return false;
+					}
 			}
 
 		case MP_RAILWAY:
@@ -507,7 +513,7 @@
 
 		case MP_STATION:  return IsOilRig(tile) || (IsDock(tile) && GetTileSlope(tile, NULL) == SLOPE_FLAT) || IsBuoy(tile);
 		case MP_INDUSTRY: return (GetIndustrySpec(GetIndustryType(tile))->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0;
-		case MP_TUNNELBRIDGE: return GetTunnelBridgeTransportType(tile) == TRANSPORT_WATER;
+		case MP_TUNNELBRIDGE: return GetTunnelBridgeTransportType(tile) == TRANSPORT_WATER && ReverseDiagDir(GetTunnelBridgeDirection(tile)) == DirToDiagDir(from);
 		default:          return false;
 	}
 }