Fixed tram type menu missing

This commit is contained in:
Sergii Pylypenko
2021-03-15 22:18:55 +02:00
parent 05d5e5ce54
commit 76e8f99c1b

View File

@@ -893,13 +893,12 @@ static CallBackFunction ToolbarZoomOutClick(Window *w)
/* --- Rail button menu --- */
enum { MENU_IDX_WATER = RAILTYPE_END + 1, MENU_IDX_AIR, MENU_IDX_TRAM, MENU_IDX_ROAD, };
enum { MENU_IDX_WATER = RAILTYPE_END + 1, MENU_IDX_AIR, MENU_IDX_TRAM, MENU_IDX_ROAD = MENU_IDX_TRAM + ROADTYPE_END + 1, };
static CallBackFunction ToolbarBuildRailClick(Window *w)
{
DropDownList list = GetRailTypeDropDownList();
if (_settings_client.gui.compact_vertical_toolbar) {
const Company *c = Company::Get(_local_company);
DropDownList roads = GetRoadTypeDropDownList(RTTB_ROAD);
for (auto &&iter: roads) {
if (iter->result == INVALID_ROADTYPE) continue;
@@ -908,7 +907,14 @@ static CallBackFunction ToolbarBuildRailClick(Window *w)
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)));
DropDownList trams = GetRoadTypeDropDownList(RTTB_TRAM);
for (auto &&iter: trams) {
if (iter->result == INVALID_ROADTYPE) continue;
const DropDownListIconItem *ptr = static_cast<const DropDownListIconItem *>(iter.get());
DropDownListIconItem *elem = new DropDownListIconItem(*ptr);
elem->result += MENU_IDX_TRAM;
list.emplace_back(elem);
}
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));
}
@@ -920,6 +926,7 @@ static CallBackFunction ToolbarBuildRailClick(Window *w)
static CallBackFunction MenuClickBuildRoad(int index);
static CallBackFunction MenuClickBuildWater(int index);
static CallBackFunction MenuClickBuildAir(int index);
static CallBackFunction ToolbarBuildTramClick(Window *w);
/**
* Handle click on the entry in the Build Rail menu.
@@ -932,8 +939,8 @@ static CallBackFunction MenuClickBuildRail(int index)
if (index >= MENU_IDX_ROAD) {
return MenuClickBuildRoad(index - MENU_IDX_ROAD);
}
if (index == MENU_IDX_TRAM) {
return MenuClickBuildRoad(ROADTYPE_TRAM);
if (index >= MENU_IDX_TRAM && index < MENU_IDX_ROAD) {
return MenuClickBuildRoad(index - MENU_IDX_TRAM);
}
if (index == MENU_IDX_WATER) {
return MenuClickBuildWater(0);