21 case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile); |
21 case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile); |
22 case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); |
22 case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); |
23 } |
23 } |
24 |
24 |
25 case MP_STATION: |
25 case MP_STATION: |
26 if (!IsRoadStopTile(tile)) return 0; |
26 if (!IsRoadStopTile(tile)) return ROAD_NONE; |
27 return DiagDirToRoadBits(GetRoadStopDir(tile)); |
27 return DiagDirToRoadBits(GetRoadStopDir(tile)); |
28 |
28 |
29 case MP_TUNNELBRIDGE: |
29 case MP_TUNNELBRIDGE: |
30 if (IsTunnel(tile)) { |
30 if (IsTunnel(tile)) { |
31 if (GetTunnelTransportType(tile) != TRANSPORT_ROAD) return 0; |
31 if (GetTunnelTransportType(tile) != TRANSPORT_ROAD) return ROAD_NONE; |
32 return DiagDirToRoadBits(ReverseDiagDir(GetTunnelDirection(tile))); |
32 return DiagDirToRoadBits(ReverseDiagDir(GetTunnelDirection(tile))); |
33 } else { |
33 } else { |
34 if (GetBridgeTransportType(tile) != TRANSPORT_ROAD) return 0; |
34 if (GetBridgeTransportType(tile) != TRANSPORT_ROAD) return ROAD_NONE; |
35 return DiagDirToRoadBits(ReverseDiagDir(GetBridgeRampDirection(tile))); |
35 return DiagDirToRoadBits(ReverseDiagDir(GetBridgeRampDirection(tile))); |
36 } |
36 } |
37 |
37 |
38 default: return 0; |
38 default: return ROAD_NONE; |
39 } |
39 } |
40 } |
40 } |
41 |
41 |
42 |
42 |
43 TrackBits GetAnyRoadTrackBits(TileIndex tile) |
43 TrackBits GetAnyRoadTrackBits(TileIndex tile) |
44 { |
44 { |
45 uint32 r; |
45 uint32 r; |
46 |
46 |
47 // Don't allow local authorities to build roads through road depots or road stops. |
47 // Don't allow local authorities to build roads through road depots or road stops. |
48 if ((IsTileType(tile, MP_STREET) && IsTileDepotType(tile, TRANSPORT_ROAD)) || IsTileType(tile, MP_STATION)) { |
48 if ((IsTileType(tile, MP_STREET) && IsTileDepotType(tile, TRANSPORT_ROAD)) || IsTileType(tile, MP_STATION)) { |
49 return 0; |
49 return TRACK_BIT_NONE; |
50 } |
50 } |
51 |
51 |
52 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); |
52 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); |
53 return (byte)(r | (r >> 8)); |
53 return (TrackBits)(byte)(r | (r >> 8)); |
54 } |
54 } |