Codechange: Use a switch with fall-through instead of a if-sequence with context data between cases.

pull/128/head
frosch 4 years ago committed by Charles Pigott
parent 7f351fd7c1
commit 3d29c9483b

@ -1908,38 +1908,42 @@ static void SetDefaultRailGui()
if (_local_company == COMPANY_SPECTATOR || !Company::IsValidID(_local_company)) return;
extern RailType _last_built_railtype;
RailType rt = (RailType)(_settings_client.gui.default_rail_type + RAILTYPE_END);
if (rt == DEF_RAILTYPE_MOST_USED) {
/* Find the most used rail type */
uint count[RAILTYPE_END];
memset(count, 0, sizeof(count));
for (TileIndex t = 0; t < MapSize(); t++) {
if (IsTileType(t, MP_RAILWAY) || IsLevelCrossingTile(t) || HasStationTileRail(t) ||
(IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) {
count[GetRailType(t)]++;
RailType rt;
switch (_settings_client.gui.default_rail_type) {
case 2: {
/* Find the most used rail type */
uint count[RAILTYPE_END];
memset(count, 0, sizeof(count));
for (TileIndex t = 0; t < MapSize(); t++) {
if (IsTileType(t, MP_RAILWAY) || IsLevelCrossingTile(t) || HasStationTileRail(t) ||
(IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) {
count[GetRailType(t)]++;
}
}
}
rt = RAILTYPE_RAIL;
for (RailType r = RAILTYPE_ELECTRIC; r < RAILTYPE_END; r++) {
if (count[r] >= count[rt]) rt = r;
}
rt = RAILTYPE_RAIL;
for (RailType r = RAILTYPE_ELECTRIC; r < RAILTYPE_END; r++) {
if (count[r] >= count[rt]) rt = r;
}
/* No rail, just get the first available one */
if (count[rt] == 0) rt = DEF_RAILTYPE_FIRST;
}
switch (rt) {
case DEF_RAILTYPE_FIRST:
if (count[rt] > 0) break;
/* No rail, just get the first available one */
FALLTHROUGH;
}
case 0:
/* Use first available type */
rt = RAILTYPE_RAIL;
while (rt < RAILTYPE_END && !HasRailtypeAvail(_local_company, rt)) rt++;
break;
case DEF_RAILTYPE_LAST:
case 1:
/* Use last available type */
rt = GetBestRailtype(_local_company);
break;
default:
break;
NOT_REACHED();
}
_last_built_railtype = _cur_railtype = rt;

@ -32,10 +32,6 @@ enum RailType : byte {
RAILTYPE_MAGLEV = 3, ///< Maglev
RAILTYPE_END = 64, ///< Used for iterations
INVALID_RAILTYPE = 0xFF, ///< Flag for invalid railtype
DEF_RAILTYPE_FIRST = RAILTYPE_END, ///< Default railtype: first available
DEF_RAILTYPE_LAST, ///< Default railtype: last available
DEF_RAILTYPE_MOST_USED, ///< Default railtype: most used
};
/** Allow incrementing of Track variables */

Loading…
Cancel
Save