Fixed NewRoadTypes build dropdown list in compact toolbar

This commit is contained in:
pelya
2020-08-25 00:35:20 +03:00
parent ebe5701b0b
commit 3d5c20f50a
2 changed files with 24 additions and 15 deletions

View File

@@ -893,15 +893,24 @@ static CallBackFunction ToolbarZoomOutClick(Window *w)
/* --- Rail button menu --- */ /* --- Rail button menu --- */
enum { MENU_IDX_WATER = RAILTYPE_END + 1, MENU_IDX_AIR, MENU_IDX_TRAM, MENU_IDX_ROAD, };
static CallBackFunction ToolbarBuildRailClick(Window *w) static CallBackFunction ToolbarBuildRailClick(Window *w)
{ {
DropDownList list = GetRailTypeDropDownList(); DropDownList list = GetRailTypeDropDownList();
if (_settings_client.gui.compact_vertical_toolbar) { if (_settings_client.gui.compact_vertical_toolbar) {
const Company *c = Company::Get(_local_company); const Company *c = Company::Get(_local_company);
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDROAD, PAL_NONE, STR_ROAD_MENU_ROAD_CONSTRUCTION, RAILTYPE_END + ROADTYPE_ROAD, false)); DropDownList roads = GetRoadTypeDropDownList(RTTB_ROAD);
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDTRAMS, PAL_NONE, STR_ROAD_MENU_TRAM_CONSTRUCTION, RAILTYPE_END + ROADTYPE_TRAM, !HasBit(c->avail_roadtypes, ROADTYPE_TRAM))); for (auto &&iter: roads) {
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDWATER, PAL_NONE, STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION, RAILTYPE_END + WID_TN_WATER, false)); if (iter->result == INVALID_ROADTYPE) continue;
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDAIR, PAL_NONE, STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION, RAILTYPE_END + WID_TN_AIR, false)); const DropDownListIconItem *ptr = static_cast<const DropDownListIconItem *>(iter.get());
DropDownListIconItem *elem = new DropDownListIconItem(*ptr);
elem->result += MENU_IDX_ROAD;
list.emplace_back(elem);
}
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDTRAMS, PAL_NONE, STR_ROAD_MENU_TRAM_CONSTRUCTION, MENU_IDX_TRAM, !HasBit(c->avail_roadtypes, ROADTYPE_TRAM)));
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDWATER, PAL_NONE, STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION, MENU_IDX_WATER, false));
list.emplace_back(new DropDownListIconItem(SPR_IMG_BUILDAIR, PAL_NONE, STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION, MENU_IDX_AIR, false));
} }
ShowDropDownList(w, std::move(list), _last_built_railtype, WID_TN_RAILS, 140, true); ShowDropDownList(w, std::move(list), _last_built_railtype, WID_TN_RAILS, 140, true);
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
@@ -920,15 +929,17 @@ static CallBackFunction MenuClickBuildAir(int index);
*/ */
static CallBackFunction MenuClickBuildRail(int index) static CallBackFunction MenuClickBuildRail(int index)
{ {
switch (index) { if (index >= MENU_IDX_ROAD) {
case RAILTYPE_END + ROADTYPE_ROAD: return MenuClickBuildRoad(index - MENU_IDX_ROAD);
return MenuClickBuildRoad(ROADTYPE_ROAD); }
case RAILTYPE_END + ROADTYPE_TRAM: if (index == MENU_IDX_TRAM) {
return MenuClickBuildRoad(ROADTYPE_TRAM); return MenuClickBuildRoad(ROADTYPE_TRAM);
case RAILTYPE_END + WID_TN_WATER: }
return MenuClickBuildWater(0); if (index == MENU_IDX_WATER) {
case RAILTYPE_END + WID_TN_AIR: return MenuClickBuildWater(0);
return MenuClickBuildAir(0); }
if (index == MENU_IDX_AIR) {
return MenuClickBuildAir(0);
} }
_last_built_railtype = (RailType)index; _last_built_railtype = (RailType)index;
ShowBuildRailToolbar(_last_built_railtype); ShowBuildRailToolbar(_last_built_railtype);

View File

@@ -4,5 +4,3 @@
- Create auto-save when the app is put to background, and load it on the next start. - Create auto-save when the app is put to background, and load it on the next start.
- Two-finger cancel action does not work when confirmation dialog is disabled. - Two-finger cancel action does not work when confirmation dialog is disabled.
- New road types menu is not shown when building roads (Rattroads grf, Heqs Ratt grf).