Changeset - r23981:f4e84a9c86e5
[Not reviewed]
master
0 2 0
frosch - 4 years ago 2019-12-17 23:48:03
frosch@openttd.org
Codechange: Use a switch with fall-through instead of a if-sequence with context data between cases.
2 files changed with 26 insertions and 26 deletions:
0 comments (0 inline, 0 general)
src/rail_gui.cpp
Show inline comments
 
@@ -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;
 
			}
 

	
 
			if (count[rt] > 0) break;
 

	
 
			/* No rail, just get the first available one */
 
			FALLTHROUGH;
 
		}
 

	
 
		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:
 
		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;
src/rail_type.h
Show inline comments
 
@@ -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 */
0 comments (0 inline, 0 general)