diff options
author | PeterN <peter@fuzzle.org> | 2019-03-31 02:05:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-31 02:05:23 +0100 |
commit | 6d1cc142c2390b3466a91de19d16e55bf1ee19f8 (patch) | |
tree | 48913eef7c9ccad20b4aa58c210f189f83f64d22 /src/rail_gui.cpp | |
parent | e1069eee05b648a64ff5dac3dd5701b01cfa2034 (diff) | |
download | openttd-6d1cc142c2390b3466a91de19d16e55bf1ee19f8.tar.xz |
Change: Shorten engine rail type drop down in autoreplace window. (#7448)
In the autoreplace window, the rail type drop down is for choosing engines
of the given time. Many rail types do not have engines specifically designed for them,
and are merely compatible with other rail types. This list is thus unwieldy and many
options have no engines available.
As this drop down is for choosing _engine_ rail type rather than compatible rail types,
we can list just the rail types explicitly listed by engines.
Diffstat (limited to 'src/rail_gui.cpp')
-rw-r--r-- | src/rail_gui.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 827f24456..176e8e6ef 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -1989,20 +1989,20 @@ void InitializeRailGUI() */ DropDownList *GetRailTypeDropDownList(bool for_replacement, bool all_option) { - RailTypes used_railtypes = RAILTYPES_NONE; + RailTypes used_railtypes; + RailTypes avail_railtypes; - /* Find the used railtypes. */ - Engine *e; - FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { - if (!HasBit(e->info.climates, _settings_game.game_creation.landscape)) continue; + const Company *c = Company::Get(_local_company); - used_railtypes |= GetRailTypeInfo(e->u.rail.railtype)->introduces_railtypes; + /* Find the used railtypes. */ + if (for_replacement) { + avail_railtypes = GetCompanyRailtypes(c->index, false); + used_railtypes = GetRailTypes(false); + } else { + avail_railtypes = c->avail_railtypes; + used_railtypes = GetRailTypes(true); } - /* Get the date introduced railtypes as well. */ - used_railtypes = AddDateIntroducedRailTypes(used_railtypes, MAX_DAY); - - const Company *c = Company::Get(_local_company); DropDownList *list = new DropDownList(); if (all_option) { @@ -2030,9 +2030,9 @@ DropDownList *GetRailTypeDropDownList(bool for_replacement, bool all_option) StringID str = for_replacement ? rti->strings.replace_text : (rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING); DropDownListParamStringItem *item; if (for_replacement) { - item = new DropDownListParamStringItem(str, rt, !HasBit(c->avail_railtypes, rt)); + item = new DropDownListParamStringItem(str, rt, !HasBit(avail_railtypes, rt)); } else { - DropDownListIconItem *iconitem = new DropDownListIconItem(rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(c->avail_railtypes, rt)); + DropDownListIconItem *iconitem = new DropDownListIconItem(rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(avail_railtypes, rt)); iconitem->SetDimension(d); item = iconitem; } |