equal
deleted
inserted
replaced
12 #include "tunnel_map.h" |
12 #include "tunnel_map.h" |
13 #include "station_map.h" |
13 #include "station_map.h" |
14 #include "depot.h" |
14 #include "depot.h" |
15 |
15 |
16 |
16 |
17 RoadBits GetAnyRoadBits(TileIndex tile) |
17 RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt) |
18 { |
18 { |
|
19 if (!HASBIT(GetRoadTypes(tile), rt)) return ROAD_NONE; |
|
20 |
19 switch (GetTileType(tile)) { |
21 switch (GetTileType(tile)) { |
20 case MP_STREET: |
22 case MP_STREET: |
21 switch (GetRoadTileType(tile)) { |
23 switch (GetRoadTileType(tile)) { |
22 default: |
24 default: |
23 case ROAD_TILE_NORMAL: return GetRoadBits(tile); |
25 case ROAD_TILE_NORMAL: return GetRoadBits(tile, rt); |
24 case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile); |
26 case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile); |
25 case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); |
27 case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); |
26 } |
28 } |
27 |
29 |
28 case MP_STATION: |
30 case MP_STATION: |
42 default: return ROAD_NONE; |
44 default: return ROAD_NONE; |
43 } |
45 } |
44 } |
46 } |
45 |
47 |
46 |
48 |
47 TrackBits GetAnyRoadTrackBits(TileIndex tile) |
49 TrackBits GetAnyRoadTrackBits(TileIndex tile, RoadType rt) |
48 { |
50 { |
49 uint32 r; |
51 uint32 r; |
50 |
52 |
51 /* Don't allow local authorities to build roads through road depots or road stops. */ |
53 /* Don't allow local authorities to build roads through road depots or road stops. */ |
52 if ((IsTileType(tile, MP_STREET) && IsTileDepotType(tile, TRANSPORT_ROAD)) || (IsTileType(tile, MP_STATION) && !IsDriveThroughStopTile(tile))) { |
54 if ((IsTileType(tile, MP_STREET) && IsTileDepotType(tile, TRANSPORT_ROAD)) || (IsTileType(tile, MP_STATION) && !IsDriveThroughStopTile(tile)) || !HASBIT(GetRoadTypes(tile), rt)) { |
53 return TRACK_BIT_NONE; |
55 return TRACK_BIT_NONE; |
54 } |
56 } |
55 |
57 |
56 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); |
58 r = GetTileTrackStatus(tile, TRANSPORT_ROAD); |
|
59 |
57 return (TrackBits)(byte)(r | (r >> 8)); |
60 return (TrackBits)(byte)(r | (r >> 8)); |
58 } |
61 } |