mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-26 08:14:38 +01:00
Create ToggleOption and Separator constructors
This commit is contained in:
@@ -134,7 +134,7 @@ namespace OpenRCT2::Dropdown
|
||||
return ItemExt(_expectedItemIndex, STR_TOGGLE_OPTION, _stringId);
|
||||
}
|
||||
|
||||
constexpr ItemExt Separator()
|
||||
constexpr ItemExt ExtSeparator()
|
||||
{
|
||||
return ItemExt(-1, Dropdown::kSeparatorString, kStringIdEmpty);
|
||||
}
|
||||
@@ -144,6 +144,16 @@ namespace OpenRCT2::Dropdown
|
||||
return Item{ STR_DROPDOWN_MENU_LABEL, stringId };
|
||||
}
|
||||
|
||||
constexpr Item ToggleOption(StringId stringId)
|
||||
{
|
||||
return Item{ STR_TOGGLE_OPTION, stringId };
|
||||
}
|
||||
|
||||
constexpr Item Separator()
|
||||
{
|
||||
return Item{ kSeparatorString };
|
||||
}
|
||||
|
||||
struct DropdownState
|
||||
{
|
||||
int32_t numItems{};
|
||||
|
||||
@@ -513,8 +513,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
case WIDX_FILTER_DROPDOWN_BTN:
|
||||
for (auto ddIdx = EnumValue(DDIX_FILTER_RCT1); ddIdx <= EnumValue(DDIX_FILTER_CUSTOM); ddIdx++)
|
||||
{
|
||||
gDropdown.items[ddIdx].args.generic = kSourceStringIds[ddIdx];
|
||||
gDropdown.items[ddIdx].format = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[ddIdx] = Dropdown::ToggleOption(kSourceStringIds[ddIdx]);
|
||||
}
|
||||
|
||||
// Track designs manager cannot select multiple, so only show selection filters if not in track designs
|
||||
@@ -522,12 +521,10 @@ namespace OpenRCT2::Ui::Windows
|
||||
if (!(gLegacyScene == LegacyScene::trackDesignsManager))
|
||||
{
|
||||
numSelectionItems = 3;
|
||||
gDropdown.items[DDIX_FILTER_SEPARATOR].format = 0;
|
||||
gDropdown.items[DDIX_FILTER_SELECTED].format = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[DDIX_FILTER_NONSELECTED].format = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[DDIX_FILTER_SEPARATOR].args.generic = kStringIdNone;
|
||||
gDropdown.items[DDIX_FILTER_SELECTED].args.generic = STR_SELECTED_ONLY;
|
||||
gDropdown.items[DDIX_FILTER_NONSELECTED].args.generic = STR_NON_SELECTED_ONLY;
|
||||
gDropdown.items[DDIX_FILTER_SEPARATOR] = Dropdown::Separator();
|
||||
|
||||
gDropdown.items[DDIX_FILTER_SELECTED] = Dropdown::ToggleOption(STR_SELECTED_ONLY);
|
||||
gDropdown.items[DDIX_FILTER_NONSELECTED] = Dropdown::ToggleOption(STR_NON_SELECTED_ONLY);
|
||||
}
|
||||
|
||||
auto& ddWidget = widgets[WIDX_FILTER_DROPDOWN];
|
||||
|
||||
@@ -902,14 +902,11 @@ namespace OpenRCT2::Ui::Windows
|
||||
if (widgetIndex != WIDX_SORT_CUSTOMISE)
|
||||
return;
|
||||
|
||||
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 = Dropdown::kSeparatorString;
|
||||
gDropdown.items[0] = Dropdown::ToggleOption(STR_FILEBROWSER_CUSTOMISE_FILENAME);
|
||||
gDropdown.items[1] = Dropdown::ToggleOption(STR_FILEBROWSER_CUSTOMISE_SIZE);
|
||||
gDropdown.items[2] = Dropdown::ToggleOption(STR_FILEBROWSER_CUSTOMISE_DATE);
|
||||
|
||||
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[3] = Dropdown::Separator();
|
||||
|
||||
gDropdown.items[4] = Dropdown::MenuLabel(STR_FILEBROWSER_PREVIEW_DISABLED);
|
||||
gDropdown.items[5] = Dropdown::MenuLabel(STR_FILEBROWSER_PREVIEW_MINIMAP);
|
||||
|
||||
@@ -1215,7 +1215,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
gDropdown.items[i] = Dropdown::MenuLabel(CurrencyDescriptors[i].stringId);
|
||||
}
|
||||
|
||||
gDropdown.items[numOrdinaryCurrencies].format = Dropdown::kSeparatorString;
|
||||
gDropdown.items[numOrdinaryCurrencies] = Dropdown::Separator();
|
||||
|
||||
gDropdown.items[numOrdinaryCurrencies + 1] = Dropdown::MenuLabel(
|
||||
CurrencyDescriptors[EnumValue(CurrencyType::Custom)].stringId);
|
||||
@@ -1916,7 +1916,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
gDropdown.items[i].args.generic = reinterpret_cast<uintptr_t>(TitleSequenceManager::GetName(i));
|
||||
}
|
||||
|
||||
gDropdown.items[numItems].format = Dropdown::kSeparatorString;
|
||||
gDropdown.items[numItems] = Dropdown::Separator();
|
||||
numItems++;
|
||||
gDropdown.items[numItems] = Dropdown::MenuLabel(STR_TITLE_SEQUENCE_RANDOM);
|
||||
numItems++;
|
||||
|
||||
@@ -2591,7 +2591,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
// Separate elements logically
|
||||
if (trackPiece == TrackElemType::None)
|
||||
{
|
||||
gDropdown.items[i++].format = kStringIdEmpty;
|
||||
gDropdown.items[i++] = Dropdown::Separator();
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
if (!hasCustomItems)
|
||||
{
|
||||
hasCustomItems = true;
|
||||
gDropdown.items[i++].format = kStringIdEmpty;
|
||||
gDropdown.items[i++] = Dropdown::Separator();
|
||||
}
|
||||
|
||||
gDropdown.items[i].format = STR_STRING;
|
||||
|
||||
@@ -1031,7 +1031,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
ToggleOption(DDIDX_TRANSPARENT_WATER, STR_VIEWPORT_TRANSPARENT_WATER),
|
||||
ToggleOption(DDIDX_HIDE_BASE, STR_REMOVE_BASE_LAND),
|
||||
ToggleOption(DDIDX_HIDE_VERTICAL, STR_REMOVE_VERTICAL_FACES),
|
||||
Separator(),
|
||||
ExtSeparator(),
|
||||
ToggleOption(DDIDX_HIDE_RIDES, STR_SEE_THROUGH_RIDES),
|
||||
ToggleOption(DDIDX_HIDE_VEHICLES, STR_SEE_THROUGH_VEHICLES),
|
||||
ToggleOption(DDIDX_HIDE_VEGETATION, STR_SEE_THROUGH_VEGETATION),
|
||||
@@ -1040,14 +1040,14 @@ namespace OpenRCT2::Ui::Windows
|
||||
ToggleOption(DDIDX_HIDE_SUPPORTS, STR_SEE_THROUGH_SUPPORTS),
|
||||
ToggleOption(DDIDX_HIDE_GUESTS, STR_SEE_THROUGH_GUESTS),
|
||||
ToggleOption(DDIDX_HIDE_STAFF, STR_SEE_THROUGH_STAFF),
|
||||
Separator(),
|
||||
ExtSeparator(),
|
||||
ToggleOption(DDIDX_LAND_HEIGHTS, STR_HEIGHT_MARKS_ON_LAND),
|
||||
ToggleOption(DDIDX_TRACK_HEIGHTS, STR_HEIGHT_MARKS_ON_RIDE_TRACKS),
|
||||
ToggleOption(DDIDX_PATH_HEIGHTS, STR_HEIGHT_MARKS_ON_PATHS),
|
||||
Separator(),
|
||||
ExtSeparator(),
|
||||
ToggleOption(DDIDX_VIEW_CLIPPING, STR_VIEW_CLIPPING_MENU),
|
||||
ToggleOption(DDIDX_HIGHLIGHT_PATH_ISSUES, STR_HIGHLIGHT_PATH_ISSUES_MENU),
|
||||
Separator(),
|
||||
ExtSeparator(),
|
||||
ToggleOption(DDIDX_TRANSPARENCY, STR_TRANSPARENCY_OPTIONS),
|
||||
};
|
||||
|
||||
@@ -1175,7 +1175,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
const auto& customMenuItems = OpenRCT2::Scripting::CustomMenuItems;
|
||||
if (!customMenuItems.empty())
|
||||
{
|
||||
gDropdown.items[i++].format = kStringIdEmpty;
|
||||
gDropdown.items[i++] = Dropdown::Separator();
|
||||
for (const auto& item : customMenuItems)
|
||||
{
|
||||
if (item.Kind == OpenRCT2::Scripting::CustomToolbarMenuItemKind::Standard)
|
||||
@@ -1243,22 +1243,18 @@ namespace OpenRCT2::Ui::Windows
|
||||
void TopToolbar::InitFastforwardMenu(Widget& widget)
|
||||
{
|
||||
int32_t num_items = 4;
|
||||
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 = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[0] = Dropdown::MenuLabel(STR_SPEED_NORMAL);
|
||||
gDropdown.items[1] = Dropdown::MenuLabel(STR_SPEED_QUICK);
|
||||
gDropdown.items[2] = Dropdown::MenuLabel(STR_SPEED_FAST);
|
||||
gDropdown.items[3] = Dropdown::MenuLabel(STR_SPEED_TURBO);
|
||||
|
||||
if (Config::Get().general.DebuggingTools)
|
||||
{
|
||||
gDropdown.items[4].format = kStringIdEmpty;
|
||||
gDropdown.items[5].format = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[5].args.generic = STR_SPEED_HYPER;
|
||||
num_items = 6;
|
||||
}
|
||||
|
||||
gDropdown.items[0].args.generic = STR_SPEED_NORMAL;
|
||||
gDropdown.items[1].args.generic = STR_SPEED_QUICK;
|
||||
gDropdown.items[2].args.generic = STR_SPEED_FAST;
|
||||
gDropdown.items[3].args.generic = STR_SPEED_TURBO;
|
||||
gDropdown.items[4] = Dropdown::Separator();
|
||||
gDropdown.items[5] = Dropdown::MenuLabel(STR_SPEED_HYPER);
|
||||
}
|
||||
|
||||
WindowDropdownShowText(
|
||||
{ windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1,
|
||||
@@ -1312,7 +1308,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
{
|
||||
gDropdown.items[numItems++].format = STR_SCREENSHOT;
|
||||
gDropdown.items[numItems++].format = STR_GIANT_SCREENSHOT;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_ABOUT;
|
||||
gDropdown.items[numItems++].format = STR_FILE_BUG_ON_GITHUB;
|
||||
|
||||
@@ -1320,7 +1316,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
gDropdown.items[numItems++].format = STR_UPDATE_AVAILABLE;
|
||||
|
||||
gDropdown.items[numItems++].format = STR_OPTIONS;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
|
||||
if (gLegacyScene == LegacyScene::trackDesigner)
|
||||
gDropdown.items[numItems++].format = STR_QUIT_ROLLERCOASTER_DESIGNER;
|
||||
@@ -1332,12 +1328,12 @@ namespace OpenRCT2::Ui::Windows
|
||||
else if (gLegacyScene == LegacyScene::scenarioEditor)
|
||||
{
|
||||
gDropdown.items[numItems++].format = STR_LOAD_LANDSCAPE;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_SAVE_LANDSCAPE;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_SCREENSHOT;
|
||||
gDropdown.items[numItems++].format = STR_GIANT_SCREENSHOT;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_ABOUT;
|
||||
gDropdown.items[numItems++].format = STR_FILE_BUG_ON_GITHUB;
|
||||
|
||||
@@ -1345,7 +1341,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
gDropdown.items[numItems++].format = STR_UPDATE_AVAILABLE;
|
||||
|
||||
gDropdown.items[numItems++].format = STR_OPTIONS;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_QUIT_SCENARIO_EDITOR;
|
||||
gDropdown.items[numItems++].format = STR_EXIT_OPENRCT2;
|
||||
}
|
||||
@@ -1353,13 +1349,13 @@ namespace OpenRCT2::Ui::Windows
|
||||
{
|
||||
gDropdown.items[numItems++].format = STR_NEW_GAME;
|
||||
gDropdown.items[numItems++].format = STR_LOAD_GAME;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_SAVE_GAME;
|
||||
gDropdown.items[numItems++].format = STR_SAVE_GAME_AS;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_SCREENSHOT;
|
||||
gDropdown.items[numItems++].format = STR_GIANT_SCREENSHOT;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_ABOUT;
|
||||
gDropdown.items[numItems++].format = STR_FILE_BUG_ON_GITHUB;
|
||||
|
||||
@@ -1367,7 +1363,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
gDropdown.items[numItems++].format = STR_UPDATE_AVAILABLE;
|
||||
|
||||
gDropdown.items[numItems++].format = STR_OPTIONS;
|
||||
gDropdown.items[numItems++].format = kStringIdEmpty;
|
||||
gDropdown.items[numItems++] = Dropdown::Separator();
|
||||
gDropdown.items[numItems++].format = STR_QUIT_TO_MENU;
|
||||
gDropdown.items[numItems++].format = STR_EXIT_OPENRCT2;
|
||||
}
|
||||
@@ -1387,7 +1383,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
ToggleOption(DDIDX_OBJECT_SELECTION, STR_DEBUG_DROPDOWN_OBJECT_SELECTION),
|
||||
ToggleOption(DDIDX_INVENTIONS_LIST, STR_DEBUG_DROPDOWN_INVENTIONS_LIST),
|
||||
ToggleOption(DDIDX_SCENARIO_OPTIONS, STR_DEBUG_DROPDOWN_SCENARIO_OPTIONS),
|
||||
Separator(),
|
||||
ExtSeparator(),
|
||||
ToggleOption(DDIDX_ENABLE_SANDBOX_MODE, STR_ENABLE_SANDBOX_MODE),
|
||||
ToggleOption(DDIDX_DISABLE_CLEARANCE_CHECKS, STR_DISABLE_CLEARANCE_CHECKS),
|
||||
ToggleOption(DDIDX_DISABLE_SUPPORT_LIMITS, STR_DISABLE_SUPPORT_LIMITS),
|
||||
@@ -1469,16 +1465,15 @@ namespace OpenRCT2::Ui::Windows
|
||||
|
||||
void TopToolbar::InitDebugMenu(Widget& widget)
|
||||
{
|
||||
gDropdown.items[DDIDX_CONSOLE].format = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[DDIDX_CONSOLE].args.generic = STR_DEBUG_DROPDOWN_CONSOLE;
|
||||
gDropdown.items[DDIDX_DEBUG_PAINT].format = STR_TOGGLE_OPTION;
|
||||
gDropdown.items[DDIDX_DEBUG_PAINT].args.generic = STR_DEBUG_DROPDOWN_DEBUG_PAINT;
|
||||
gDropdown.items[DDIDX_CONSOLE] = Dropdown::ToggleOption(STR_DEBUG_DROPDOWN_CONSOLE);
|
||||
gDropdown.items[DDIDX_DEBUG_PAINT] = Dropdown::ToggleOption(STR_DEBUG_DROPDOWN_DEBUG_PAINT);
|
||||
|
||||
WindowDropdownShowText(
|
||||
{ windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1,
|
||||
colours[0].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, TOP_TOOLBAR_DEBUG_COUNT);
|
||||
|
||||
auto* windowMgr = GetWindowManager();
|
||||
gDropdown.items[DDIDX_CONSOLE].setChecked(windowMgr->FindByClass(WindowClass::Console) != nullptr);
|
||||
gDropdown.items[DDIDX_DEBUG_PAINT].setChecked(windowMgr->FindByClass(WindowClass::DebugPaint) != nullptr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user