Loading

Revision differences

Old revision #pjv8ib4iqNew revision #ps2m2br1i
12                 MarkCanalsAndRiversAroundDirty(tile);  12                 MarkCanalsAndRiversAroundDirty(tile);  
13             }  13             }  
14   14   
15@@ -1234,6 +1236,7 @@  15@@ -1233,6 +1235,7 @@
   16 
16 static TrackStatus GetTileTrackStatus_Water(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)  17 static TrackStatus GetTileTrackStatus_Water(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)  
17 {  18 {  
  19+    static const byte clear_tracks[] = {63, 32, 4, 0, 16, 0, 0, 8, 8, 0, 0, 16, 0, 4, 32, 63};  
18     static const byte coast_tracks[] = {0, 32, 4, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0};  20     static const byte coast_tracks[] = {0, 32, 4, 0, 16, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0};  
19+    static const byte clear_tracks[] = {63, 32, 4, 0, 16, 0, 0, 8, 8, 0, 0, 16, 0, 4, 32, 0};    
20   21   
21     TrackBits ts;  22     TrackBits ts;  
22     
23@@ -1240,7 +1243,7 @@  23@@ -1240,7 +1243,7 @@  
24     if (mode != TRANSPORT_WATER) return 0;  24     if (mode != TRANSPORT_WATER) return 0;  
25   25   
26     switch (GetWaterTileType(tile)) {  26     switch (GetWaterTileType(tile)) {  
27-        case WATER_TILE_CLEAR: ts = IsTileFlat(tile) ? TRACK_BIT_ALL : TRACK_BIT_NONE; break;  27-        case WATER_TILE_CLEAR: ts = IsTileFlat(tile) ? TRACK_BIT_ALL : TRACK_BIT_NONE; break;  
28+        case WATER_TILE_CLEAR: ts = (TrackBits)clear_tracks[GetTileSlope(tile) & 0xF]; break;  28+        case WATER_TILE_CLEAR: ts = IsTileFlat(tile) ? TRACK_BIT_ALL : (TrackBits)clear_tracks[GetTileSlope(tile) & 0xF]; break;
29         case WATER_TILE_COAST: ts = (TrackBits)coast_tracks[GetTileSlope(tile) & 0xF]; break;  29         case WATER_TILE_COAST: ts = (TrackBits)coast_tracks[GetTileSlope(tile) & 0xF]; break;  
30         case WATER_TILE_LOCK:  ts = DiagDirToDiagTrackBits(GetLockDirection(tile)); break;  30         case WATER_TILE_LOCK:  ts = DiagDirToDiagTrackBits(GetLockDirection(tile)); break;  
31         case WATER_TILE_DEPOT: ts = AxisToTrackBits(GetShipDepotAxis(tile)); break; 31         case WATER_TILE_DEPOT: ts = AxisToTrackBits(GetShipDepotAxis(tile)); break;