| 1357 | } |
| 1358 | |
| 1359 | static TrackStatus GetTileTrackStatus_Water(TileIndex tile, TransportType mode, uint, DiagDirection) |
| 1360 | { |
| 1361 | static const TrackBits coast_tracks[] = {TRACK_BIT_NONE, TRACK_BIT_RIGHT, TRACK_BIT_UPPER, TRACK_BIT_NONE, TRACK_BIT_LEFT, TRACK_BIT_NONE, TRACK_BIT_NONE, |
| 1362 | TRACK_BIT_NONE, TRACK_BIT_LOWER, TRACK_BIT_NONE, TRACK_BIT_NONE, TRACK_BIT_NONE, TRACK_BIT_NONE, TRACK_BIT_NONE, TRACK_BIT_NONE, TRACK_BIT_NONE}; |
| 1363 | |
| 1364 | TrackBits ts; |
| 1365 | |
| 1366 | if (mode != TRANSPORT_WATER) return 0; |
| 1367 | |
| 1368 | switch (GetWaterTileType(tile)) { |
| 1369 | case WaterTileType::Clear: ts = IsTileFlat(tile) ? TRACK_BIT_ALL : TRACK_BIT_NONE; break; |
| 1370 | case WaterTileType::Coast: ts = coast_tracks[GetTileSlope(tile) & 0xF]; break; |
| 1371 | case WaterTileType::Lock: ts = DiagDirToDiagTrackBits(GetLockDirection(tile)); break; |
| 1372 | case WaterTileType::Depot: ts = AxisToTrackBits(GetShipDepotAxis(tile)); break; |
| 1373 | default: return 0; |
| 1374 | } |
| 1375 | if (TileX(tile) == 0) { |
| 1376 | /* NE border: remove tracks that connects NE tile edge */ |
| 1377 | ts &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT); |
| 1378 | } |
| 1379 | if (TileY(tile) == 0) { |
| 1380 | /* NW border: remove tracks that connects NW tile edge */ |
| 1381 | ts &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER); |
| 1382 | } |
| 1383 | return CombineTrackStatus(TrackBitsToTrackdirBits(ts), TRACKDIR_BIT_NONE); |
| 1384 | } |
| 1385 | |
| 1386 | static bool ClickTile_Water(TileIndex tile) |
| 1387 | { |
nothing calls this directly
no test coverage detected