diff options
author | rubidium <rubidium@openttd.org> | 2007-05-20 19:14:08 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-05-20 19:14:08 +0000 |
commit | d86b5e5e9328e85faa1bf97615b8c796fc874863 (patch) | |
tree | 040143187639f8855d9618bfc8f784f4a42bbaeb /src/road_map.cpp | |
parent | c685a7179f58e8df5e64b424d4f320723e07b65c (diff) | |
download | openttd-d86b5e5e9328e85faa1bf97615b8c796fc874863.tar.xz |
(svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
Diffstat (limited to 'src/road_map.cpp')
-rw-r--r-- | src/road_map.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/road_map.cpp b/src/road_map.cpp index 98a893490..0c40d5d4a 100644 --- a/src/road_map.cpp +++ b/src/road_map.cpp @@ -14,13 +14,15 @@ #include "depot.h" -RoadBits GetAnyRoadBits(TileIndex tile) +RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt) { + if (!HASBIT(GetRoadTypes(tile), rt)) return ROAD_NONE; + switch (GetTileType(tile)) { case MP_STREET: switch (GetRoadTileType(tile)) { default: - case ROAD_TILE_NORMAL: return GetRoadBits(tile); + case ROAD_TILE_NORMAL: return GetRoadBits(tile, rt); case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile); case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile)); } @@ -44,15 +46,16 @@ RoadBits GetAnyRoadBits(TileIndex tile) } -TrackBits GetAnyRoadTrackBits(TileIndex tile) +TrackBits GetAnyRoadTrackBits(TileIndex tile, RoadType rt) { uint32 r; /* Don't allow local authorities to build roads through road depots or road stops. */ - if ((IsTileType(tile, MP_STREET) && IsTileDepotType(tile, TRANSPORT_ROAD)) || (IsTileType(tile, MP_STATION) && !IsDriveThroughStopTile(tile))) { + if ((IsTileType(tile, MP_STREET) && IsTileDepotType(tile, TRANSPORT_ROAD)) || (IsTileType(tile, MP_STATION) && !IsDriveThroughStopTile(tile)) || !HASBIT(GetRoadTypes(tile), rt)) { return TRACK_BIT_NONE; } r = GetTileTrackStatus(tile, TRANSPORT_ROAD); + return (TrackBits)(byte)(r | (r >> 8)); } |