Make gDropdownItemsChecked and gDropdownItemsDisabled static

This commit is contained in:
Gymnasiast 2017-07-24 11:24:23 +02:00 committed by Michael Steenbeek
parent b183d82062
commit 8473a40bc4
7 changed files with 54 additions and 36 deletions

View File

@ -1207,7 +1207,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde
goto dropdown_cleanup; goto dropdown_cleanup;
} }
if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && gDropdownItemsDisabled & (1ULL << dropdown_index)) { if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && dropdown_is_disabled(dropdown_index)) {
goto dropdown_cleanup; goto dropdown_cleanup;
} }
@ -1344,7 +1344,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde
window_tooltip_show(colourTooltips[dropdown_index], x, y); window_tooltip_show(colourTooltips[dropdown_index], x, y);
} }
if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && gDropdownItemsDisabled & (1ULL << dropdown_index)) { if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && dropdown_is_disabled(dropdown_index)) {
return; return;
} }

View File

@ -52,8 +52,8 @@ bool _dropdown_list_vertically;
sint32 gDropdownNumItems; sint32 gDropdownNumItems;
rct_string_id gDropdownItemsFormat[DROPDOWN_ITEMS_MAX_SIZE]; rct_string_id gDropdownItemsFormat[DROPDOWN_ITEMS_MAX_SIZE];
sint64 gDropdownItemsArgs[DROPDOWN_ITEMS_MAX_SIZE]; sint64 gDropdownItemsArgs[DROPDOWN_ITEMS_MAX_SIZE];
uint64 gDropdownItemsChecked; static uint64 _dropdownItemsChecked;
uint64 gDropdownItemsDisabled; static uint64 _dropdownItemsDisabled;
bool gDropdownIsColour; bool gDropdownIsColour;
sint32 gDropdownLastColourHover; sint32 gDropdownLastColourHover;
sint32 gDropdownHighlightedIndex; sint32 gDropdownHighlightedIndex;
@ -61,29 +61,29 @@ sint32 gDropdownDefaultIndex;
bool dropdown_is_checked(sint32 index) bool dropdown_is_checked(sint32 index)
{ {
return gDropdownItemsChecked & (1ULL << index); return _dropdownItemsChecked & (1ULL << index);
} }
bool dropdown_is_disabled(sint32 index) bool dropdown_is_disabled(sint32 index)
{ {
return gDropdownItemsDisabled & (1ULL << index); return _dropdownItemsDisabled & (1ULL << index);
} }
void dropdown_set_checked(sint32 index, bool value) void dropdown_set_checked(sint32 index, bool value)
{ {
if (value) { if (value) {
gDropdownItemsChecked |= 1ULL << index; _dropdownItemsChecked |= 1ULL << index;
} else { } else {
gDropdownItemsChecked &= ~(1ULL << index); _dropdownItemsChecked &= ~(1ULL << index);
} }
} }
void dropdown_set_disabled(sint32 index, bool value) void dropdown_set_disabled(sint32 index, bool value)
{ {
if (value) { if (value) {
gDropdownItemsDisabled |= 1ULL << index; _dropdownItemsDisabled |= 1ULL << index;
} else { } else {
gDropdownItemsDisabled &= ~(1ULL << index); _dropdownItemsDisabled &= ~(1ULL << index);
} }
} }
@ -208,8 +208,8 @@ void window_dropdown_show_text_custom_width(sint32 x, sint32 y, sint32 extray, u
// Input state // Input state
gDropdownHighlightedIndex = -1; gDropdownHighlightedIndex = -1;
gDropdownItemsDisabled = 0; _dropdownItemsDisabled = 0;
gDropdownItemsChecked = 0; _dropdownItemsChecked = 0;
gDropdownIsColour = false; gDropdownIsColour = false;
gDropdownDefaultIndex = -1; gDropdownDefaultIndex = -1;
input_set_state(INPUT_STATE_DROPDOWN_ACTIVE); input_set_state(INPUT_STATE_DROPDOWN_ACTIVE);
@ -282,8 +282,8 @@ void window_dropdown_show_image(sint32 x, sint32 y, sint32 extray, uint8 colour,
// Input state // Input state
gDropdownHighlightedIndex = -1; gDropdownHighlightedIndex = -1;
gDropdownItemsDisabled = 0; _dropdownItemsDisabled = 0;
gDropdownItemsChecked = 0; _dropdownItemsChecked = 0;
gDropdownIsColour = false; gDropdownIsColour = false;
gDropdownDefaultIndex = -1; gDropdownDefaultIndex = -1;
input_set_state(INPUT_STATE_DROPDOWN_ACTIVE); input_set_state(INPUT_STATE_DROPDOWN_ACTIVE);

View File

@ -36,8 +36,6 @@ extern sint32 gAppropriateImageDropdownItemsPerRow[];
extern sint32 gDropdownNumItems; extern sint32 gDropdownNumItems;
extern rct_string_id gDropdownItemsFormat[DROPDOWN_ITEMS_MAX_SIZE]; extern rct_string_id gDropdownItemsFormat[DROPDOWN_ITEMS_MAX_SIZE];
extern sint64 gDropdownItemsArgs[DROPDOWN_ITEMS_MAX_SIZE]; extern sint64 gDropdownItemsArgs[DROPDOWN_ITEMS_MAX_SIZE];
extern uint64 gDropdownItemsChecked;
extern uint64 gDropdownItemsDisabled;
extern bool gDropdownIsColour; extern bool gDropdownIsColour;
extern sint32 gDropdownLastColourHover; extern sint32 gDropdownLastColourHover;
extern sint32 gDropdownHighlightedIndex; extern sint32 gDropdownHighlightedIndex;

View File

@ -901,8 +901,6 @@ void window_editor_object_selection_mousedown(rct_window *w, rct_widgetindex wid
{ {
sint32 num_items; sint32 num_items;
//widget = &w->widgets[widgetIndex - 1];
switch (widgetIndex) { switch (widgetIndex) {
case WIDX_FILTER_DROPDOWN: case WIDX_FILTER_DROPDOWN:
@ -935,7 +933,14 @@ void window_editor_object_selection_mousedown(rct_window *w, rct_widgetindex wid
num_items num_items
); );
gDropdownItemsChecked = _filter_flags & 0xF; for (sint32 i = 0; i < 4; i++)
{
if (_filter_flags & (1 << i))
{
dropdown_set_checked(i, true);
}
}
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER)) { if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER)) {
dropdown_set_checked(DDIX_FILTER_SELECTED, _FILTER_SELECTED); dropdown_set_checked(DDIX_FILTER_SELECTED, _FILTER_SELECTED);
dropdown_set_checked(DDIX_FILTER_NONSELECTED, _FILTER_NONSELECTED); dropdown_set_checked(DDIX_FILTER_NONSELECTED, _FILTER_NONSELECTED);

View File

@ -2043,11 +2043,12 @@ static void window_ride_show_view_dropdown(rct_window *w, rct_widget *widget)
} }
// Set highlighted item // Set highlighted item
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK))
sint32 j = 2; {
for (sint32 i = 0; i < ride->num_vehicles; i++) { for (sint32 i = 0; i < ride->num_vehicles; i++)
gDropdownItemsDisabled |= j; {
j <<= 1; // The +1 is to skip 'Overall view'
dropdown_set_disabled(i + 1, true);;
} }
} }
@ -3757,7 +3758,7 @@ static void window_ride_maintenance_mousedown(rct_window *w, rct_widgetindex wid
} }
if ((ride->lifecycle_flags & RIDE_LIFECYCLE_BREAKDOWN_PENDING) == 0) { if ((ride->lifecycle_flags & RIDE_LIFECYCLE_BREAKDOWN_PENDING) == 0) {
gDropdownItemsDisabled = (1 << 0); dropdown_set_disabled(0, true);
} }
} }
break; break;
@ -4140,7 +4141,7 @@ static void window_ride_colour_mousedown(rct_window *w, rct_widgetindex widgetIn
vehicle_colour vehicleColour; vehicle_colour vehicleColour;
rct_widget *dropdownWidget; rct_widget *dropdownWidget;
rct_ride_entry *rideEntry; rct_ride_entry *rideEntry;
sint32 i, numItems; sint32 i, numItems, checkedIndex;
rct_string_id stringId; rct_string_id stringId;
ride = get_ride(w->number); ride = get_ride(w->number);
@ -4197,16 +4198,15 @@ static void window_ride_colour_mousedown(rct_window *w, rct_widgetindex widgetIn
dropdown_set_checked(ride->track_colour_supports[colourSchemeIndex], true); dropdown_set_checked(ride->track_colour_supports[colourSchemeIndex], true);
break; break;
case WIDX_ENTRANCE_STYLE_DROPDOWN: case WIDX_ENTRANCE_STYLE_DROPDOWN:
gDropdownItemsChecked = 0; checkedIndex = -1;
for (i = 0; i < countof(window_ride_entrance_style_list); i++) { for (i = 0; i < countof(window_ride_entrance_style_list); i++) {
gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL; gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL;
gDropdownItemsArgs[i] = RideEntranceDefinitions[window_ride_entrance_style_list[i]].string_id; gDropdownItemsArgs[i] = RideEntranceDefinitions[window_ride_entrance_style_list[i]].string_id;
if (ride->entrance_style == window_ride_entrance_style_list[i]) { if (ride->entrance_style == window_ride_entrance_style_list[i]) {
dropdown_set_checked(i, true); checkedIndex = i;
} }
} }
uint64 checked = gDropdownItemsChecked;
window_dropdown_show_text_custom_width( window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->x + dropdownWidget->left,
@ -4219,7 +4219,11 @@ static void window_ride_colour_mousedown(rct_window *w, rct_widgetindex widgetIn
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = checked;
if (checkedIndex != -1)
{
dropdown_set_checked(checkedIndex, true);
}
break; break;
case WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN: case WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN:
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
@ -5066,7 +5070,9 @@ static void window_ride_measurements_mousedown(rct_window *w, rct_widgetindex wi
); );
gDropdownDefaultIndex = 0; gDropdownDefaultIndex = 0;
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
gDropdownItemsDisabled |= 2; {
dropdown_set_disabled(1, true);
}
} }
/** /**

View File

@ -3578,7 +3578,13 @@ static void window_ride_construction_show_special_track_dropdown(rct_window *w,
widget->right - widget->left widget->right - widget->left
); );
gDropdownItemsDisabled = _currentDisabledSpecialTrackPieces; for (sint32 i = 0; i < 32; i++)
{
if (_currentDisabledSpecialTrackPieces & (1 << i))
{
dropdown_set_disabled(i, true);
}
}
gDropdownDefaultIndex = defaultIndex; gDropdownDefaultIndex = defaultIndex;
} }

View File

@ -555,7 +555,7 @@ void window_staff_overview_mousedown(rct_window *w, rct_widgetindex widgetIndex,
// Disable clear patrol area if no area is set. // Disable clear patrol area if no area is set.
if (!(gStaffModes[peep->staff_id] & 2)) { if (!(gStaffModes[peep->staff_id] & 2)) {
gDropdownItemsDisabled |= (1ULL << 1); dropdown_set_disabled(1, true);
} }
} }
@ -1285,7 +1285,7 @@ void window_staff_options_mousedown(rct_window *w, rct_widgetindex widgetIndex,
} }
rct_peep* peep = GET_PEEP(w->number); rct_peep* peep = GET_PEEP(w->number);
sint32 itemsChecked = 0; sint32 checkedIndex = -1;
//This will be moved below where Items Checked is when all //This will be moved below where Items Checked is when all
//of dropdown related functions are finished. This prevents //of dropdown related functions are finished. This prevents
//the dropdown from not working on first click. //the dropdown from not working on first click.
@ -1293,7 +1293,7 @@ void window_staff_options_mousedown(rct_window *w, rct_widgetindex widgetIndex,
for (sint32 i = 0; i < numCostumes; i++) { for (sint32 i = 0; i < numCostumes; i++) {
uint8 costume = _availableCostumes[i]; uint8 costume = _availableCostumes[i];
if (costume == peep->sprite_type) { if (costume == peep->sprite_type) {
itemsChecked = 1 << i; checkedIndex = i;
} }
gDropdownItemsArgs[i] = StaffCostumeNames[costume]; gDropdownItemsArgs[i] = StaffCostumeNames[costume];
gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL; gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL;
@ -1309,7 +1309,10 @@ void window_staff_options_mousedown(rct_window *w, rct_widgetindex widgetIndex,
window_dropdown_show_text_custom_width(x, y, extray, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numCostumes, width); window_dropdown_show_text_custom_width(x, y, extray, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numCostumes, width);
// See above note. // See above note.
gDropdownItemsChecked = itemsChecked; if (checkedIndex != -1)
{
dropdown_set_checked(checkedIndex, true);
}
} }
/** /**