diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 3052efd5d8..792b0fee81 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -1792,6 +1792,7 @@ struct CompanyInfrastructureWindow : Window /* Get the date introduced railtypes as well. */ this->railtypes = AddDateIntroducedRailTypes(this->railtypes, CalendarTime::MAX_DATE); + this->railtypes &= ~_railtypes_hidden_mask; /* Find the used roadtypes. */ for (const Engine *e : Engine::IterateType(VEH_ROAD)) { diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 97a775940d..d879103f80 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -44,7 +44,7 @@ typedef std::vector TrainList; RailTypeInfo _railtypes[RAILTYPE_END]; -std::vector _sorted_railtypes; +std::vector _sorted_railtypes; ///< Sorted list of rail types. RailTypes _railtypes_hidden_mask; /** Enum holding the signal offset in the sprite sheet according to the side it is representing. */ @@ -137,9 +137,8 @@ void InitRailTypes() _sorted_railtypes.clear(); for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { - if (_railtypes[rt].label != 0 && !HasBit(_railtypes_hidden_mask, rt)) { - _sorted_railtypes.push_back(rt); - } + if (_railtypes[rt].label == 0) continue; + _sorted_railtypes.push_back(rt); } std::sort(_sorted_railtypes.begin(), _sorted_railtypes.end(), CompareRailTypes); } diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 13b38101f6..579466812e 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -2052,6 +2052,7 @@ DropDownList GetRailTypeDropDownList(bool for_replacement, bool all_option) Dimension d = { 0, 0 }; /* Get largest icon size, to ensure text is aligned on each menu item. */ if (!for_replacement) { + used_railtypes &= ~_railtypes_hidden_mask; for (const auto &rt : _sorted_railtypes) { if (!HasBit(used_railtypes, rt)) continue; const RailTypeInfo *rti = GetRailTypeInfo(rt); diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 1414d9ac41..2e405b46c4 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -52,7 +52,7 @@ typedef std::vector RoadVehicleList; RoadTypeInfo _roadtypes[ROADTYPE_END]; -std::vector _sorted_roadtypes; +std::vector _sorted_roadtypes; ///< Sorted list of road types. RoadTypes _roadtypes_hidden_mask; /** @@ -121,9 +121,8 @@ void InitRoadTypes() _sorted_roadtypes.clear(); for (RoadType rt = ROADTYPE_BEGIN; rt != ROADTYPE_END; rt++) { - if (_roadtypes[rt].label != 0 && !HasBit(_roadtypes_hidden_mask, rt)) { - _sorted_roadtypes.push_back(rt); - } + if (_roadtypes[rt].label == 0) continue; + _sorted_roadtypes.push_back(rt); } std::sort(_sorted_roadtypes.begin(), _sorted_roadtypes.end(), CompareRoadTypes); } diff --git a/src/road_gui.cpp b/src/road_gui.cpp index 54c63bdbde..5f98d3e0f5 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -1779,6 +1779,7 @@ DropDownList GetRoadTypeDropDownList(RoadTramTypes rtts, bool for_replacement, b Dimension d = { 0, 0 }; /* Get largest icon size, to ensure text is aligned on each menu item. */ if (!for_replacement) { + used_roadtypes &= ~_roadtypes_hidden_mask; for (const auto &rt : _sorted_roadtypes) { if (!HasBit(used_roadtypes, rt)) continue; const RoadTypeInfo *rti = GetRoadTypeInfo(rt); @@ -1820,6 +1821,7 @@ DropDownList GetScenRoadTypeDropDownList(RoadTramTypes rtts) RoadTypes used_roadtypes = GetRoadTypes(true); /* Filter listed road types */ + used_roadtypes &= ~_roadtypes_hidden_mask; if (!HasBit(rtts, RTT_ROAD)) used_roadtypes &= _roadtypes_type; if (!HasBit(rtts, RTT_TRAM)) used_roadtypes &= ~_roadtypes_type;