diff --git a/src/openrct2-ui/interface/Dropdown.h b/src/openrct2-ui/interface/Dropdown.h index d132289e75..c2a9a3b8fc 100644 --- a/src/openrct2-ui/interface/Dropdown.h +++ b/src/openrct2-ui/interface/Dropdown.h @@ -139,6 +139,11 @@ namespace OpenRCT2::Dropdown return ItemExt(-1, Dropdown::kSeparatorString, kStringIdEmpty); } + constexpr Item MenuLabel(StringId stringId) + { + return Item{ STR_DROPDOWN_MENU_LABEL, stringId }; + } + struct DropdownState { int32_t numItems{}; diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index 937bb41708..24c56f6527 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -167,8 +167,7 @@ namespace OpenRCT2::Ui::Windows auto numItems = std::size(kBannerColouredTextFormats) - 1; for (size_t i = 0; i < numItems; ++i) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = kBannerColouredTextFormats[i + 1]; + gDropdown.items[i] = Dropdown::MenuLabel(kBannerColouredTextFormats[i + 1]); } // Switch to the dropdown box widget. diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index de91317f26..8123e2f43c 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -994,8 +994,7 @@ static StringId window_cheats_page_titles[] = { for (size_t i = 0; i < std::size(_staffSpeedNames); i++) { - gDropdown.items[i].args.generic = _staffSpeedNames[i]; - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; + gDropdown.items[i] = Dropdown::MenuLabel(_staffSpeedNames[i]); } WindowDropdownShowTextCustomWidth( @@ -1018,8 +1017,7 @@ static StringId window_cheats_page_titles[] = { for (size_t i = 0; i < std::size(WeatherTypes); i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = WeatherTypes[i]; + gDropdown.items[i] = Dropdown::MenuLabel(WeatherTypes[i]); } WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index 046c1e7abc..63bdfcb437 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -87,11 +87,8 @@ namespace OpenRCT2::Ui::Windows } break; case WIDX_AFFIX_DROPDOWN_BUTTON: - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_PREFIX; - - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].args.generic = STR_SUFFIX; + gDropdown.items[0] = Dropdown::MenuLabel(STR_PREFIX); + gDropdown.items[1] = Dropdown::MenuLabel(STR_SUFFIX); WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 632b18067d..da1dac7cd5 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -749,8 +749,7 @@ namespace OpenRCT2::Ui::Windows if (objectiveAllowedByMoneyUsage && objectiveAllowedByPaymentSettings) { - gDropdown.items[numItems].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numItems].args.generic = ObjectiveDropdownOptionNames[i]; + gDropdown.items[numItems] = Dropdown::MenuLabel(ObjectiveDropdownOptionNames[i]); numItems++; } } @@ -775,8 +774,7 @@ namespace OpenRCT2::Ui::Windows { for (int32_t i = EnumValue(Scenario::Category::beginner); i <= EnumValue(Scenario::Category::other); i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = Scenario::kScenarioCategoryStringIds[i]; + gDropdown.items[i] = Dropdown::MenuLabel(Scenario::kScenarioCategoryStringIds[i]); } Widget* dropdownWidget = &widgets[WIDX_CATEGORY]; @@ -1557,12 +1555,9 @@ namespace OpenRCT2::Ui::Windows { Widget* dropdownWidget = &widgets[widgetIndex - 1]; - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_FREE_PARK_ENTER; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].args.generic = STR_PAY_PARK_ENTER; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].args.generic = STR_PAID_ENTRY_PAID_RIDES; + gDropdown.items[0] = Dropdown::MenuLabel(STR_FREE_PARK_ENTER); + gDropdown.items[1] = Dropdown::MenuLabel(STR_PAY_PARK_ENTER); + gDropdown.items[2] = Dropdown::MenuLabel(STR_PAID_ENTRY_PAID_RIDES); WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() - 1, @@ -1896,15 +1891,10 @@ namespace OpenRCT2::Ui::Windows { auto& dropdownWidget = widgets[widgetIndex - 1]; - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[3].format = STR_DROPDOWN_MENU_LABEL; - - gDropdown.items[0].args.generic = STR_GUESTS_PREFER_INTENSITY_NONE; - gDropdown.items[1].args.generic = STR_GUESTS_PREFER_INTENSITY_BALANCED; - gDropdown.items[2].args.generic = STR_GUESTS_PREFER_INTENSITY_LESS_INTENSE_RIDES; - gDropdown.items[3].args.generic = STR_GUESTS_PREFER_INTENSITY_MORE_INTENSE_RIDES; + gDropdown.items[0] = Dropdown::MenuLabel(STR_GUESTS_PREFER_INTENSITY_NONE); + gDropdown.items[1] = Dropdown::MenuLabel(STR_GUESTS_PREFER_INTENSITY_BALANCED); + gDropdown.items[2] = Dropdown::MenuLabel(STR_GUESTS_PREFER_INTENSITY_LESS_INTENSE_RIDES); + gDropdown.items[3] = Dropdown::MenuLabel(STR_GUESTS_PREFER_INTENSITY_MORE_INTENSE_RIDES); WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget.left, windowPos.y + dropdownWidget.top }, dropdownWidget.height() - 1, diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 7353d3a12b..0ea291922c 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -348,10 +348,8 @@ namespace OpenRCT2::Ui::Windows } case WIDX_INFO_TYPE_DROPDOWN_BUTTON: { - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = GetViewName(GuestViewType::Actions); - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].args.generic = GetViewName(GuestViewType::Thoughts); + gDropdown.items[0] = Dropdown::MenuLabel(GetViewName(GuestViewType::Actions)); + gDropdown.items[1] = Dropdown::MenuLabel(GetViewName(GuestViewType::Thoughts)); auto* widget = &widgets[widgetIndex - 1]; WindowDropdownShowTextCustomWidth( diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index b8e43faf10..20ec680889 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -905,17 +905,15 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[0].format = STR_TOGGLE_OPTION; gDropdown.items[1].format = STR_TOGGLE_OPTION; gDropdown.items[2].format = STR_TOGGLE_OPTION; - gDropdown.items[3].format = kStringIdEmpty; - gDropdown.items[4].format = STR_DROPDOWN_BULLET_OPTION; - gDropdown.items[5].format = STR_DROPDOWN_BULLET_OPTION; - gDropdown.items[6].format = STR_DROPDOWN_BULLET_OPTION; + gDropdown.items[3].format = Dropdown::kSeparatorString; gDropdown.items[0].args.generic = STR_FILEBROWSER_CUSTOMISE_FILENAME; gDropdown.items[1].args.generic = STR_FILEBROWSER_CUSTOMISE_SIZE; gDropdown.items[2].args.generic = STR_FILEBROWSER_CUSTOMISE_DATE; - gDropdown.items[4].args.generic = STR_FILEBROWSER_PREVIEW_DISABLED; - gDropdown.items[5].args.generic = STR_FILEBROWSER_PREVIEW_MINIMAP; - gDropdown.items[6].args.generic = STR_FILEBROWSER_PREVIEW_SCREENSHOT; + + gDropdown.items[4] = Dropdown::MenuLabel(STR_FILEBROWSER_PREVIEW_DISABLED); + gDropdown.items[5] = Dropdown::MenuLabel(STR_FILEBROWSER_PREVIEW_MINIMAP); + gDropdown.items[6] = Dropdown::MenuLabel(STR_FILEBROWSER_PREVIEW_SCREENSHOT); Widget* widget = &widgets[WIDX_SORT_CUSTOMISE]; diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index b3632308c3..58e1c29c45 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -211,8 +211,7 @@ namespace OpenRCT2::Ui::Windows int32_t maxSize = std::min(Dropdown::kItemsMaxSize, static_cast(ShopItems.size())); for (int32_t i = 0; i < maxSize; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = GetShopItemDescriptor(ShopItems[i]).Naming.Plural; + gDropdown.items[i] = Dropdown::MenuLabel(GetShopItemDescriptor(ShopItems[i]).Naming.Plural); numItems++; } diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 61c7735e9b..da136f6f47 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -846,12 +846,9 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_FULLSCREEN_DROPDOWN: - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_OPTIONS_DISPLAY_WINDOWED; - gDropdown.items[1].args.generic = STR_OPTIONS_DISPLAY_FULLSCREEN; - gDropdown.items[2].args.generic = STR_OPTIONS_DISPLAY_FULLSCREEN_BORDERLESS; + gDropdown.items[0] = Dropdown::MenuLabel(STR_OPTIONS_DISPLAY_WINDOWED); + gDropdown.items[1] = Dropdown::MenuLabel(STR_OPTIONS_DISPLAY_FULLSCREEN); + gDropdown.items[2] = Dropdown::MenuLabel(STR_OPTIONS_DISPLAY_FULLSCREEN_BORDERLESS); ShowDropdown(widget, 3); @@ -862,8 +859,7 @@ namespace OpenRCT2::Ui::Windows const auto numItems = static_cast(std::size(kDrawingEngineStringIds)); for (int32_t i = 0; i < numItems; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = kDrawingEngineStringIds[i]; + gDropdown.items[i] = Dropdown::MenuLabel(kDrawingEngineStringIds[i]); } ShowDropdown(widget, numItems); gDropdown.items[EnumValue(Config::Get().general.DrawingEngine)].setChecked(true); @@ -886,12 +882,9 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_FRAME_RATE_LIMIT_DROPDOWN: { - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_FRAME_RATE_LIMIT_DEFAULT; - gDropdown.items[1].args.generic = STR_FRAME_RATE_LIMIT_VSYNC; - gDropdown.items[2].args.generic = STR_FRAME_RATE_LIMIT_UNRESTRICTED; + gDropdown.items[0] = Dropdown::MenuLabel(STR_FRAME_RATE_LIMIT_DEFAULT); + gDropdown.items[1] = Dropdown::MenuLabel(STR_FRAME_RATE_LIMIT_VSYNC); + gDropdown.items[2] = Dropdown::MenuLabel(STR_FRAME_RATE_LIMIT_UNRESTRICTED); ShowDropdown(widget, 3); @@ -1112,12 +1105,9 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_VIRTUAL_FLOOR_DROPDOWN: - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_VIRTUAL_FLOOR_STYLE_DISABLED; - gDropdown.items[1].args.generic = STR_VIRTUAL_FLOOR_STYLE_TRANSPARENT; - gDropdown.items[2].args.generic = STR_VIRTUAL_FLOOR_STYLE_GLASSY; + gDropdown.items[0] = Dropdown::MenuLabel(STR_VIRTUAL_FLOOR_STYLE_DISABLED); + gDropdown.items[1] = Dropdown::MenuLabel(STR_VIRTUAL_FLOOR_STYLE_TRANSPARENT); + gDropdown.items[2] = Dropdown::MenuLabel(STR_VIRTUAL_FLOOR_STYLE_GLASSY); Widget* widget = &widgets[widgetIndex - 1]; ShowDropdown(widget, 3); @@ -1205,10 +1195,8 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_HEIGHT_LABELS_DROPDOWN: - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_HEIGHT_IN_UNITS; - gDropdown.items[1].args.generic = STR_REAL_VALUES; + gDropdown.items[0] = Dropdown::MenuLabel(STR_HEIGHT_IN_UNITS); + gDropdown.items[1] = Dropdown::MenuLabel(STR_REAL_VALUES); ShowDropdown(widget, 2); @@ -1224,16 +1212,13 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < numOrdinaryCurrencies; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = CurrencyDescriptors[i].stringId; + gDropdown.items[i] = Dropdown::MenuLabel(CurrencyDescriptors[i].stringId); } gDropdown.items[numOrdinaryCurrencies].format = Dropdown::kSeparatorString; - gDropdown.items[numOrdinaryCurrencies + 1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numOrdinaryCurrencies + 1].args.generic = CurrencyDescriptors[EnumValue( - CurrencyType::Custom)] - .stringId; + gDropdown.items[numOrdinaryCurrencies + 1] = Dropdown::MenuLabel( + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].stringId); ShowDropdown(widget, numItems); @@ -1248,22 +1233,17 @@ namespace OpenRCT2::Ui::Windows break; } case WIDX_DISTANCE_DROPDOWN: - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_IMPERIAL; - gDropdown.items[1].args.generic = STR_METRIC; - gDropdown.items[2].args.generic = STR_SI; + gDropdown.items[0] = Dropdown::MenuLabel(STR_IMPERIAL); + gDropdown.items[1] = Dropdown::MenuLabel(STR_METRIC); + gDropdown.items[2] = Dropdown::MenuLabel(STR_SI); ShowDropdown(widget, 3); gDropdown.items[static_cast(Config::Get().general.MeasurementFormat)].setChecked(true); break; case WIDX_TEMPERATURE_DROPDOWN: - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_CELSIUS; - gDropdown.items[1].args.generic = STR_FAHRENHEIT; + gDropdown.items[0] = Dropdown::MenuLabel(STR_CELSIUS); + gDropdown.items[1] = Dropdown::MenuLabel(STR_FAHRENHEIT); ShowDropdown(widget, 2); @@ -1281,8 +1261,7 @@ namespace OpenRCT2::Ui::Windows case WIDX_DATE_FORMAT_DROPDOWN: for (size_t i = 0; i < 4; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = DateFormatStringIDs[i]; + gDropdown.items[i] = Dropdown::MenuLabel(DateFormatStringIDs[i]); } ShowDropdown(widget, 4); gDropdown.items[Config::Get().general.DateFormat].setChecked(true); @@ -1487,8 +1466,7 @@ namespace OpenRCT2::Ui::Windows if (Config::Get().sound.TitleMusic == theme.Kind) checkedIndex = numItems; - gDropdown.items[numItems].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numItems++].args.generic = theme.Name; + gDropdown.items[numItems++] = Dropdown::MenuLabel(theme.Name); } ShowDropdown(widget, numItems); gDropdown.items[checkedIndex].setChecked(true); @@ -1938,10 +1916,9 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[i].args.generic = reinterpret_cast(TitleSequenceManager::GetName(i)); } - gDropdown.items[numItems].format = 0; + gDropdown.items[numItems].format = Dropdown::kSeparatorString; numItems++; - gDropdown.items[numItems].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numItems].args.generic = STR_TITLE_SEQUENCE_RANDOM; + gDropdown.items[numItems] = Dropdown::MenuLabel(STR_TITLE_SEQUENCE_RANDOM); numItems++; WindowDropdownShowText( @@ -1958,10 +1935,8 @@ namespace OpenRCT2::Ui::Windows { uint32_t numItems = 2; - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_SCENARIO_PREVIEWS_MINIMAPS; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].args.generic = STR_SCENARIO_PREVIEWS_SCREENSHOTS; + gDropdown.items[0] = Dropdown::MenuLabel(STR_SCENARIO_PREVIEWS_MINIMAPS); + gDropdown.items[1] = Dropdown::MenuLabel(STR_SCENARIO_PREVIEWS_SCREENSHOTS); WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, @@ -1973,8 +1948,7 @@ namespace OpenRCT2::Ui::Windows case WIDX_DEFAULT_INSPECTION_INTERVAL_DROPDOWN: for (size_t i = 0; i < 7; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = kRideInspectionIntervalNames[i]; + gDropdown.items[i] = Dropdown::MenuLabel(kRideInspectionIntervalNames[i]); } ShowDropdown(widget, 7); @@ -2169,8 +2143,7 @@ namespace OpenRCT2::Ui::Windows case WIDX_AUTOSAVE_FREQUENCY_DROPDOWN: for (size_t i = AUTOSAVE_EVERY_MINUTE; i <= AUTOSAVE_NEVER; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = AutosaveNames[i]; + gDropdown.items[i] = Dropdown::MenuLabel(AutosaveNames[i]); } ShowDropdown(widget, AUTOSAVE_NEVER + 1); diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index e10cf075bd..7cca2efc10 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -445,10 +445,8 @@ namespace OpenRCT2::Ui::Windows if (widgetIndex == WIDX_OPEN_OR_CLOSE) { auto& widget = widgets[widgetIndex]; - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_CLOSE_PARK; - gDropdown.items[1].args.generic = STR_OPEN_PARK; + gDropdown.items[0] = Dropdown::MenuLabel(STR_CLOSE_PARK); + gDropdown.items[1] = Dropdown::MenuLabel(STR_OPEN_PARK); WindowDropdownShowText( { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[1], 0, 2); diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index 1ba0bb6088..e83d60dfe9 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -478,8 +478,7 @@ namespace OpenRCT2::Ui::Windows for (std::size_t i = 0; i < std::size(kResearchFundingLevelNames); i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = kResearchFundingLevelNames[i]; + gDropdown.items[i] = Dropdown::MenuLabel(kResearchFundingLevelNames[i]); } WindowDropdownShowTextCustomWidth( { w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index e4dceee1c2..202316c6f7 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1761,8 +1761,7 @@ namespace OpenRCT2::Ui::Windows colours[1], 0, 0, numItems, widget->right - dropdownWidget->left); // First item - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_OVERALL_VIEW; + gDropdown.items[0] = Dropdown::MenuLabel(STR_OVERALL_VIEW); int32_t currentItem = 1; // Vehicles @@ -1832,8 +1831,7 @@ namespace OpenRCT2::Ui::Windows if (info.Ride->supportsStatus(status)) { auto index = info.NumItems; - gDropdown.items[index].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[index].args.generic = text; + gDropdown.items[index] = Dropdown::MenuLabel(text); if (info.CurrentStatus == status) { info.CheckedIndex = index; @@ -1925,8 +1923,7 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < _rideDropdownData.size(); i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = _rideDropdownData[i].LabelId; + gDropdown.items[i] = Dropdown::MenuLabel(_rideDropdownData[i].LabelId); } Widget* dropdownWidget = widget - 1; @@ -2073,8 +2070,7 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < numItems; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = _vehicleDropdownData[i].LabelId; + gDropdown.items[i] = Dropdown::MenuLabel(_vehicleDropdownData[i].LabelId); } Widget* dropdownWidget = widget - 1; @@ -2134,8 +2130,7 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < _entranceDropdownData.size(); i++) { - gDropdown.items[i].args.generic = _entranceDropdownData[i].LabelId; - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; + gDropdown.items[i] = Dropdown::MenuLabel(_entranceDropdownData[i].LabelId); if (_entranceDropdownData[i].EntranceTypeId == ride->entranceStyle) gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL_SELECTED; } @@ -3112,8 +3107,7 @@ namespace OpenRCT2::Ui::Windows { if (availableModes & (1uLL << i)) { - gDropdown.items[numAvailableModes].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numAvailableModes].args.generic = kRideModeNames[i]; + gDropdown.items[numAvailableModes] = Dropdown::MenuLabel(kRideModeNames[i]); if (ride->mode == static_cast(i)) checkedIndex = numAvailableModes; @@ -3141,8 +3135,7 @@ namespace OpenRCT2::Ui::Windows auto dropdownWidget = widget - 1; for (auto i = 0; i < 5; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = VehicleLoadNames[i]; + gDropdown.items[i] = Dropdown::MenuLabel(VehicleLoadNames[i]); } WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, @@ -3791,8 +3784,7 @@ namespace OpenRCT2::Ui::Windows dropdownWidget--; for (int32_t i = 0; i < 7; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = kRideInspectionIntervalNames[i]; + gDropdown.items[i] = Dropdown::MenuLabel(kRideInspectionIntervalNames[i]); } WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, @@ -3808,8 +3800,7 @@ namespace OpenRCT2::Ui::Windows if (rideEntry->ride_type[j] != kRideTypeNull) break; } - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_DEBUG_FIX_RIDE; + gDropdown.items[0] = Dropdown::MenuLabel(STR_DEBUG_FIX_RIDE); for (int32_t i = 0; i < 8; i++) { assert(j < static_cast(std::size(rideEntry->ride_type))); @@ -3820,8 +3811,7 @@ namespace OpenRCT2::Ui::Windows if (ride->numTrains != 1) continue; } - gDropdown.items[numItems].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numItems].args.generic = RideBreakdownReasonNames[i]; + gDropdown.items[numItems] = Dropdown::MenuLabel(RideBreakdownReasonNames[i]); numItems++; } } @@ -3854,8 +3844,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[numItems].setChecked(true); break; } - gDropdown.items[numItems].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numItems].args.generic = RideBreakdownReasonNames[i]; + gDropdown.items[numItems] = Dropdown::MenuLabel(RideBreakdownReasonNames[i]); numItems++; } } @@ -4325,8 +4314,7 @@ namespace OpenRCT2::Ui::Windows { for (size_t i = 0; i < std::size(ColourSchemeNames); i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = ColourSchemeNames[i]; + gDropdown.items[i] = Dropdown::MenuLabel(ColourSchemeNames[i]); } WindowDropdownShowTextCustomWidth( @@ -4352,8 +4340,7 @@ namespace OpenRCT2::Ui::Windows { for (auto i = 0; i < 4; i++) { - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = MazeOptions[i].text; + gDropdown.items[i] = Dropdown::MenuLabel(MazeOptions[i].text); } WindowDropdownShowTextCustomWidth( @@ -4372,16 +4359,14 @@ namespace OpenRCT2::Ui::Windows auto vehicleTypeName = GetRideComponentName(ride->getRideTypeDescriptor().NameConvention.vehicle).singular; auto numDropdownItems = 2; - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_ALL_VEHICLES_IN_SAME_COLOURS; + gDropdown.items[0] = Dropdown::MenuLabel(STR_ALL_VEHICLES_IN_SAME_COLOURS); gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; gDropdown.items[1].args.generic = (vehicleTypeName << 16) | STR_DIFFERENT_COLOURS_PER; if (getNumVisibleCars() > 1) { numDropdownItems++; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].args.generic = STR_DIFFERENT_COLOURS_PER_VEHICLE; + gDropdown.items[2] = Dropdown::MenuLabel(STR_DIFFERENT_COLOURS_PER_VEHICLE); } WindowDropdownShowTextCustomWidth( @@ -5085,8 +5070,7 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < numItems; i++) { auto musicObj = objManager.GetLoadedObject(musicOrder[i]); - gDropdown.items[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[i].args.generic = musicObj->NameStringId; + gDropdown.items[i] = Dropdown::MenuLabel(musicObj->NameStringId); } WindowDropdownShowTextCustomWidth( diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index 3306a52474..89e5860bdf 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -331,8 +331,7 @@ namespace OpenRCT2::Ui::Windows selectedIndex = numItems; } - gDropdown.items[numItems].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[numItems].args.generic = ride_info_type_string_mapping[type]; + gDropdown.items[numItems] = Dropdown::MenuLabel(ride_info_type_string_mapping[type]); numItems++; } diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 393bd1ce8d..60f6bc2699 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -894,12 +894,9 @@ static uint64_t PageDisabledWidgets[] = { // Use dropdown instead of dropdown button widget--; // Fill dropdown list - gDropdown.items[0].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[1].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[2].format = STR_DROPDOWN_MENU_LABEL; - gDropdown.items[0].args.generic = STR_TILE_INSPECTOR_WALL_FLAT; - gDropdown.items[1].args.generic = STR_TILE_INSPECTOR_WALL_SLOPED_LEFT; - gDropdown.items[2].args.generic = STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT; + gDropdown.items[0] = Dropdown::MenuLabel(STR_TILE_INSPECTOR_WALL_FLAT); + gDropdown.items[1] = Dropdown::MenuLabel(STR_TILE_INSPECTOR_WALL_SLOPED_LEFT); + gDropdown.items[2] = Dropdown::MenuLabel(STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT); WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, Dropdown::Flag::StayOpen, 3, widget->width() - 3);