src/road_map.cpp
branchgamebalance
changeset 9911 0b8b245a2391
parent 9908 0fa543611bbe
child 9912 1ac8aac92385
equal deleted inserted replaced
9910:0b2aebc8283e 9911:0b8b245a2391
    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 }