(svn r20356) -Fix [FS#3983]: apparantly one generic error message can't be understood...

This commit is contained in:
rubidium 2010-08-03 18:32:53 +00:00
parent fff8524fb9
commit b74cee45be
2 changed files with 17 additions and 1 deletions

View File

@ -3496,6 +3496,8 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Too clos
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Can't rename station...
STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... this is a town owned road
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... road facing in the wrong direction
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive through stops can't have corners
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive through stops can't have junctions
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...

View File

@ -862,7 +862,21 @@ static CommandCost CheckFlatLandRoadStop(TileArea tile_area, DoCommandFlag flags
} else {
bool build_over_road = is_drive_through && IsNormalRoadTile(cur_tile);
/* Road bits in the wrong direction. */
if (build_over_road && (GetAllRoadBits(cur_tile) & (axis == AXIS_X ? ROAD_Y : ROAD_X)) != 0) return_cmd_error(STR_ERROR_DRIVE_THROUGH_DIRECTION);
RoadBits rb = GetAllRoadBits(cur_tile);
if (build_over_road && (rb & (axis == AXIS_X ? ROAD_Y : ROAD_X)) != 0) {
/* Someone was pedantic and *NEEDED* three fracking different error messages. */
switch (CountBits(rb)) {
case 1:
return_cmd_error(STR_ERROR_DRIVE_THROUGH_DIRECTION);
case 2:
if (rb == ROAD_X || rb == ROAD_Y) return_cmd_error(STR_ERROR_DRIVE_THROUGH_DIRECTION);
return_cmd_error(STR_ERROR_DRIVE_THROUGH_CORNER);
default: // 3 or 4
return_cmd_error(STR_ERROR_DRIVE_THROUGH_JUNCTION);
}
}
RoadTypes cur_rts = IsNormalRoadTile(cur_tile) ? GetRoadTypes(cur_tile) : ROADTYPES_NONE;
uint num_roadbits = 0;