mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
Codechange: Use a switch with fall-through instead of a if-sequence with context data between cases.
This commit is contained in:
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…
Reference in New Issue
Block a user