mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-13 02:52:37 +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;
|
if (_local_company == COMPANY_SPECTATOR || !Company::IsValidID(_local_company)) return;
|
||||||
|
|
||||||
extern RailType _last_built_railtype;
|
extern RailType _last_built_railtype;
|
||||||
RailType rt = (RailType)(_settings_client.gui.default_rail_type + RAILTYPE_END);
|
RailType rt;
|
||||||
if (rt == DEF_RAILTYPE_MOST_USED) {
|
switch (_settings_client.gui.default_rail_type) {
|
||||||
/* Find the most used rail type */
|
case 2: {
|
||||||
uint count[RAILTYPE_END];
|
/* Find the most used rail type */
|
||||||
memset(count, 0, sizeof(count));
|
uint count[RAILTYPE_END];
|
||||||
for (TileIndex t = 0; t < MapSize(); t++) {
|
memset(count, 0, sizeof(count));
|
||||||
if (IsTileType(t, MP_RAILWAY) || IsLevelCrossingTile(t) || HasStationTileRail(t) ||
|
for (TileIndex t = 0; t < MapSize(); t++) {
|
||||||
(IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) {
|
if (IsTileType(t, MP_RAILWAY) || IsLevelCrossingTile(t) || HasStationTileRail(t) ||
|
||||||
count[GetRailType(t)]++;
|
(IsTileType(t, MP_TUNNELBRIDGE) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) {
|
||||||
|
count[GetRailType(t)]++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rt = RAILTYPE_RAIL;
|
rt = RAILTYPE_RAIL;
|
||||||
for (RailType r = RAILTYPE_ELECTRIC; r < RAILTYPE_END; r++) {
|
for (RailType r = RAILTYPE_ELECTRIC; r < RAILTYPE_END; r++) {
|
||||||
if (count[r] >= count[rt]) rt = r;
|
if (count[r] >= count[rt]) rt = r;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No rail, just get the first available one */
|
if (count[rt] > 0) break;
|
||||||
if (count[rt] == 0) rt = DEF_RAILTYPE_FIRST;
|
|
||||||
}
|
/* No rail, just get the first available one */
|
||||||
switch (rt) {
|
FALLTHROUGH;
|
||||||
case DEF_RAILTYPE_FIRST:
|
}
|
||||||
|
case 0:
|
||||||
|
/* Use first available type */
|
||||||
rt = RAILTYPE_RAIL;
|
rt = RAILTYPE_RAIL;
|
||||||
while (rt < RAILTYPE_END && !HasRailtypeAvail(_local_company, rt)) rt++;
|
while (rt < RAILTYPE_END && !HasRailtypeAvail(_local_company, rt)) rt++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DEF_RAILTYPE_LAST:
|
case 1:
|
||||||
|
/* Use last available type */
|
||||||
rt = GetBestRailtype(_local_company);
|
rt = GetBestRailtype(_local_company);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
_last_built_railtype = _cur_railtype = rt;
|
_last_built_railtype = _cur_railtype = rt;
|
||||||
|
@ -32,10 +32,6 @@ enum RailType : byte {
|
|||||||
RAILTYPE_MAGLEV = 3, ///< Maglev
|
RAILTYPE_MAGLEV = 3, ///< Maglev
|
||||||
RAILTYPE_END = 64, ///< Used for iterations
|
RAILTYPE_END = 64, ///< Used for iterations
|
||||||
INVALID_RAILTYPE = 0xFF, ///< Flag for invalid railtype
|
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 */
|
/** Allow incrementing of Track variables */
|
||||||
|
Loading…
Reference in New Issue
Block a user