(svn r2095) In CheckTrackCombination(): if () cascade -> switch, improve readability
--- a/rail_cmd.c Mon Mar 28 07:02:51 2005 +0000
+++ b/rail_cmd.c Mon Mar 28 07:25:36 2005 +0000
@@ -113,29 +113,36 @@
{
_error_message = STR_1001_IMPOSSIBLE_TRACK_COMBINATION;
- if ((map5&RAIL_TYPE_MASK) == RAIL_TYPE_SIGNALS) {
-
- if (map5 & trackbits) {
- _error_message = STR_1007_ALREADY_BUILT;
- return false;
- }
-
- map5 |= trackbits;
- return (map5 == (RAIL_TYPE_SIGNALS|RAIL_BIT_UPPER|RAIL_BIT_LOWER) || map5 == (RAIL_TYPE_SIGNALS|RAIL_BIT_LEFT|RAIL_BIT_RIGHT));
+ switch (map5 & RAIL_TYPE_MASK) {
+ case RAIL_TYPE_NORMAL:
+ if (map5 & trackbits) {
+ _error_message = STR_1007_ALREADY_BUILT;
+ return false;
+ }
- } else if ((map5&RAIL_TYPE_MASK) == RAIL_TYPE_NORMAL) {
- _error_message = STR_1007_ALREADY_BUILT;
- if (map5 & trackbits)
- return false;
+ if (flags & DC_NO_RAIL_OVERLAP) {
+ // Computer players are not allowed to intersect pieces of rail.
+ map5 |= trackbits;
+ return
+ map5 == (RAIL_BIT_UPPER | RAIL_BIT_LOWER) ||
+ map5 == (RAIL_BIT_LEFT | RAIL_BIT_RIGHT);
+ } else {
+ return true;
+ }
- // Computer players are not allowed to intersect pieces of rail.
- if (!(flags&DC_NO_RAIL_OVERLAP))
- return true;
+ case RAIL_TYPE_SIGNALS:
+ if (map5 & trackbits) {
+ _error_message = STR_1007_ALREADY_BUILT;
+ return false;
+ }
- map5 |= trackbits;
- return (map5 == (RAIL_BIT_UPPER|RAIL_BIT_LOWER) || map5 == (RAIL_BIT_LEFT|RAIL_BIT_RIGHT));
- } else {
- return false;
+ map5 |= trackbits;
+ return
+ map5 == (RAIL_TYPE_SIGNALS | RAIL_BIT_UPPER | RAIL_BIT_LOWER) ||
+ map5 == (RAIL_TYPE_SIGNALS | RAIL_BIT_LEFT | RAIL_BIT_RIGHT);
+
+ default:
+ return false;
}
}