From ceec430ae136c98ac36dc3d24921b05e3615a5f1 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Mon, 9 Mar 2020 12:22:29 +0100 Subject: [PATCH] Raise max size of dropdowns to 512 items --- src/openrct2-ui/interface/Dropdown.h | 8 ++++---- src/openrct2-ui/windows/Dropdown.cpp | 12 ++++++------ src/openrct2-ui/windows/Ride.cpp | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/openrct2-ui/interface/Dropdown.h b/src/openrct2-ui/interface/Dropdown.h index 99f6fbcc0b..6982e4b91f 100644 --- a/src/openrct2-ui/interface/Dropdown.h +++ b/src/openrct2-ui/interface/Dropdown.h @@ -12,10 +12,10 @@ #include #include -#define DROPDOWN_SEPARATOR 0 -#define DROPDOWN_FORMAT_COLOUR_PICKER 0xFFFE -#define DROPDOWN_FORMAT_LAND_PICKER 0xFFFF -#define DROPDOWN_ITEMS_MAX_SIZE 128 +constexpr const rct_string_id DROPDOWN_SEPARATOR = 0; +constexpr const rct_string_id DROPDOWN_FORMAT_COLOUR_PICKER = 0xFFFE; +constexpr const rct_string_id DROPDOWN_FORMAT_LAND_PICKER = 0xFFFF; +constexpr const int32_t DROPDOWN_ITEMS_MAX_SIZE = 512; enum { diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index 892e45be8d..01aef379b3 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -45,8 +45,8 @@ static bool _dropdown_list_vertically; int32_t gDropdownNumItems; rct_string_id gDropdownItemsFormat[DROPDOWN_ITEMS_MAX_SIZE]; int64_t gDropdownItemsArgs[DROPDOWN_ITEMS_MAX_SIZE]; -static bool _dropdownItemsChecked[DROPDOWN_ITEMS_MAX_SIZE]; -static bool _dropdownItemsDisabled[DROPDOWN_ITEMS_MAX_SIZE]; +static std::bitset _dropdownItemsChecked = {}; +static std::bitset _dropdownItemsDisabled = {}; bool gDropdownIsColour; int32_t gDropdownLastColourHover; int32_t gDropdownHighlightedIndex; @@ -217,8 +217,8 @@ void window_dropdown_show_text_custom_width( // Input state gDropdownHighlightedIndex = -1; - std::fill_n(_dropdownItemsDisabled, sizeof(_dropdownItemsDisabled), false); - std::fill_n(_dropdownItemsChecked, sizeof(_dropdownItemsChecked), false); + _dropdownItemsDisabled.reset(); + _dropdownItemsChecked.reset(); gDropdownIsColour = false; gDropdownDefaultIndex = -1; input_set_state(INPUT_STATE_DROPDOWN_ACTIVE); @@ -297,8 +297,8 @@ void window_dropdown_show_image( // Input state gDropdownHighlightedIndex = -1; - std::fill_n(_dropdownItemsDisabled, sizeof(_dropdownItemsDisabled), false); - std::fill_n(_dropdownItemsChecked, sizeof(_dropdownItemsChecked), false); + _dropdownItemsDisabled.reset(); + _dropdownItemsChecked.reset(); gDropdownIsColour = false; gDropdownDefaultIndex = -1; input_set_state(INPUT_STATE_DROPDOWN_ACTIVE); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index a76e83ee97..5faef14558 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4590,7 +4590,7 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn stringId = (ride->colour_scheme_type & 3) == VEHICLE_COLOUR_SCHEME_PER_TRAIN ? STR_RIDE_COLOUR_TRAIN_OPTION : STR_RIDE_COLOUR_VEHICLE_OPTION; - for (i = 0; i < std::min(numItems, (int32_t)DROPDOWN_ITEMS_MAX_SIZE); i++) + for (i = 0; i < std::min(numItems, DROPDOWN_ITEMS_MAX_SIZE); i++) { gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL; gDropdownItemsArgs[i] = ((int64_t)(i + 1) << 32)