# HG changeset patch # User rubidium # Date 1280860373 0 # Node ID b1af6b1e509da77a54679b1e27be1cfb78f71c1c # Parent 6931dd400fdf530c8dba9dfabf13efccb6742a49 (svn r20356) -Fix [FS#3983]: apparantly one generic error message can't be understood... diff --git a/src/lang/english.txt b/src/lang/english.txt --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3496,6 +3496,8 @@ 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... diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -862,7 +862,21 @@ } 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;