Merge pull request #12 from IntelOrca/show-vehicles-from-other-track-types

fix dropdown 64 item support and remove old RCT2 addresses
This commit is contained in:
Michael Steenbeek 2015-10-15 09:41:29 +02:00
commit eaf23f8e76
21 changed files with 182 additions and 154 deletions

View File

@ -1123,13 +1123,17 @@ void input_state_widget_pressed(int x, int y, int state, int widgetIndex, rct_wi
if (w->classification == WC_DROPDOWN) { if (w->classification == WC_DROPDOWN) {
dropdown_index = dropdown_index_from_point(x, y, w); dropdown_index = dropdown_index_from_point(x, y, w);
if (dropdown_index == -1)goto dropdown_cleanup; if (dropdown_index == -1) {
goto dropdown_cleanup;
}
// _dropdown_unknown?? highlighted? if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index)) {
if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index))goto dropdown_cleanup; goto dropdown_cleanup;
}
// gDropdownItemsFormat[dropdown_index] will not work until all windows that use dropdown decompiled if (gDropdownItemsFormat[dropdown_index] == 0) {
if (RCT2_ADDRESS(0x9DEBA4, uint16)[dropdown_index] == 0)goto dropdown_cleanup; goto dropdown_cleanup;
}
} }
else { else {
if (cursor_w_class != w->classification || cursor_w_number != w->number || widgetIndex != cursor_widgetIndex) if (cursor_w_class != w->classification || cursor_w_number != w->number || widgetIndex != cursor_widgetIndex)
@ -1209,14 +1213,15 @@ void input_state_widget_pressed(int x, int y, int state, int widgetIndex, rct_wi
window_tooltip_show(STR_COLOUR_NAMES_START + dropdown_index, x, y); window_tooltip_show(STR_COLOUR_NAMES_START + dropdown_index, x, y);
} }
// _dropdown_unknown?? highlighted? if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index)) {
if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index))return; return;
}
// gDropdownItemsFormat[dropdown_index] will not work until all windows that use dropdown decompiled if (gDropdownItemsFormat[dropdown_index] == 0) {
if (RCT2_ADDRESS(0x9DEBA4, uint16)[dropdown_index] == 0)return; return;
}
// _dropdown_highlighted_index gDropdownHighlightedIndex = dropdown_index;
RCT2_GLOBAL(0x009DEBA2, sint16) = dropdown_index;
window_invalidate_by_class(WC_DROPDOWN); window_invalidate_by_class(WC_DROPDOWN);
} else { } else {
gDropdownLastColourHover = -1; gDropdownLastColourHover = -1;

View File

@ -239,7 +239,7 @@ static void window_banner_mousedown(int widgetIndex, rct_window*w, rct_widget* w
13, 13,
widget->right - widget->left - 3); widget->right - widget->left - 3);
gDropdownItemsChecked = 1 << (banner->text_colour - 1); dropdown_set_checked(banner->text_colour - 1, true);
break; break;
} }
} }

View File

@ -47,16 +47,38 @@ int _dropdown_num_columns;
int _dropdown_num_rows; int _dropdown_num_rows;
int _dropdown_item_width; int _dropdown_item_width;
int _dropdown_item_height; int _dropdown_item_height;
int _dropdown_highlighted_index;
int gDropdownNumItems; int gDropdownNumItems;
uint16 gDropdownItemsFormat[64]; uint16 gDropdownItemsFormat[64];
sint64 gDropdownItemsArgs[64]; sint64 gDropdownItemsArgs[64];
// Replaces 0x009DED38
uint64 gDropdownItemsChecked; uint64 gDropdownItemsChecked;
uint64 gDropdownItemsDisabled; uint64 gDropdownItemsDisabled;
bool gDropdownIsColour; bool gDropdownIsColour;
int gDropdownLastColourHover; int gDropdownLastColourHover;
int gDropdownHighlightedIndex;
bool dropdown_is_checked(int index)
{
return gDropdownItemsChecked & (1ULL << index);
}
void dropdown_set_checked(int index, bool value)
{
if (value) {
gDropdownItemsChecked |= 1ULL << index;
} else {
gDropdownItemsChecked &= ~(1ULL << index);
}
}
void dropdown_set_disabled(int index, bool value)
{
if (value) {
gDropdownItemsDisabled |= 1ULL << index;
} else {
gDropdownItemsDisabled &= ~(1ULL << index);
}
}
static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi); static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi);
@ -178,19 +200,11 @@ void window_dropdown_show_text_custom_width(int x, int y, int extray, uint8 colo
w->colours[0] = colour; w->colours[0] = colour;
// Input state // Input state
_dropdown_highlighted_index = -1; gDropdownHighlightedIndex = -1;
gDropdownItemsDisabled = 0; gDropdownItemsDisabled = 0;
gDropdownItemsChecked = 0; gDropdownItemsChecked = 0;
RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, sint8) = INPUT_STATE_DROPDOWN_ACTIVE;
// Copy the following properties until all use of it is decompiled
RCT2_GLOBAL(0x009DEBA0, sint16) = gDropdownNumItems;
RCT2_GLOBAL(0x009DED44, sint32) = _dropdown_num_columns;
RCT2_GLOBAL(0x009DED48, sint32) = _dropdown_num_rows;
RCT2_GLOBAL(0x009DED40, sint32) = _dropdown_item_width;
RCT2_GLOBAL(0x009DED3C, sint32) = _dropdown_item_height;
RCT2_GLOBAL(0x009DEBA2, sint16) = _dropdown_highlighted_index;
gDropdownIsColour = false; gDropdownIsColour = false;
RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, sint8) = INPUT_STATE_DROPDOWN_ACTIVE;
} }
/** /**
@ -257,18 +271,13 @@ void window_dropdown_show_image(int x, int y, int extray, uint8 colour, uint8 fl
w->colours[0] = colour; w->colours[0] = colour;
// Input state // Input state
_dropdown_highlighted_index = -1; gDropdownHighlightedIndex = -1;
gDropdownItemsDisabled = 0; gDropdownItemsDisabled = 0;
gDropdownItemsChecked = 0; gDropdownItemsChecked = 0;
RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, sint8) = INPUT_STATE_DROPDOWN_ACTIVE; RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, sint8) = INPUT_STATE_DROPDOWN_ACTIVE;
// Copy the following properties until all use of it is decompiled // Copy the following properties until all use of it is decompiled
RCT2_GLOBAL(0x009DEBA0, sint16) = gDropdownNumItems; gDropdownHighlightedIndex = gDropdownHighlightedIndex;
RCT2_GLOBAL(0x009DED44, sint32) = _dropdown_num_columns;
RCT2_GLOBAL(0x009DED48, sint32) = _dropdown_num_rows;
RCT2_GLOBAL(0x009DED40, sint32) = _dropdown_item_width;
RCT2_GLOBAL(0x009DED3C, sint32) = _dropdown_item_height;
RCT2_GLOBAL(0x009DEBA2, sint16) = _dropdown_highlighted_index;
gDropdownIsColour = false; gDropdownIsColour = false;
} }
@ -283,7 +292,7 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
window_draw_widgets(w, dpi); window_draw_widgets(w, dpi);
_dropdown_highlighted_index = RCT2_GLOBAL(0x009DEBA2, sint16); gDropdownHighlightedIndex = gDropdownHighlightedIndex;
for (int i = 0; i < gDropdownNumItems; i++) { for (int i = 0; i < gDropdownNumItems; i++) {
cell_x = i % _dropdown_num_columns; cell_x = i % _dropdown_num_columns;
cell_y = i / _dropdown_num_columns; cell_y = i / _dropdown_num_columns;
@ -306,7 +315,7 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
} }
} else { } else {
// //
if (i == _dropdown_highlighted_index) { if (i == gDropdownHighlightedIndex) {
l = w->x + 2 + (cell_x * _dropdown_item_width); l = w->x + 2 + (cell_x * _dropdown_item_width);
t = w->y + 2 + (cell_y * _dropdown_item_height); t = w->y + 2 + (cell_y * _dropdown_item_height);
r = l + _dropdown_item_width - 1; r = l + _dropdown_item_width - 1;
@ -318,7 +327,7 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
if (item == (uint16)-1 || item == (uint16)-2) { if (item == (uint16)-1 || item == (uint16)-2) {
// Image item // Image item
image = *((uint32*)&gDropdownItemsArgs[i]); image = *((uint32*)&gDropdownItemsArgs[i]);
if (item == (uint16)-2 && _dropdown_highlighted_index == i) if (item == (uint16)-2 && gDropdownHighlightedIndex == i)
image++; image++;
gfx_draw_sprite( gfx_draw_sprite(
@ -329,13 +338,15 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
); );
} else { } else {
// Text item // Text item
if (i < 64) if (i < 64) {
if (gDropdownItemsChecked & (1ULL << i)) if (dropdown_is_checked(i)) {
item++; item++;
}
}
// Calculate colour // Calculate colour
colour = w->colours[0] & 0x7F; colour = w->colours[0] & 0x7F;
if (i == _dropdown_highlighted_index) if (i == gDropdownHighlightedIndex)
colour = 2; colour = 2;
if (gDropdownItemsDisabled & (1ULL << i)) if (gDropdownItemsDisabled & (1ULL << i))
if (i < 64) if (i < 64)
@ -358,7 +369,8 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
/* New function based on 6e914e /* New function based on 6e914e
* returns -1 if index is invalid * returns -1 if index is invalid
*/ */
int dropdown_index_from_point(int x, int y, rct_window* w){ int dropdown_index_from_point(int x, int y, rct_window *w)
{
int top = y - w->y - 2; int top = y - w->y - 2;
if (top < 0) return -1; if (top < 0) return -1;
@ -367,20 +379,14 @@ int dropdown_index_from_point(int x, int y, rct_window* w){
left -= 2; left -= 2;
if (left < 0) return -1; if (left < 0) return -1;
// _dropdown_item_width int column_no = left / _dropdown_item_width;
int column_no = left / RCT2_GLOBAL(0x009DED40, sint32); if (column_no >= _dropdown_num_columns) return -1;
// _dropdown_no_columns
if (column_no >= RCT2_GLOBAL(0x009DED44, sint32)) return -1;
// _dropdown_item_height int row_no = top / _dropdown_item_height;
int row_no = top / RCT2_GLOBAL(0x9DED3C, uint8); if (row_no >= _dropdown_num_rows) return -1;
// _dropdown_no_rows
if (row_no >= RCT2_GLOBAL(0x009DED48, sint32)) return -1;
// _dropdown_no_columns int dropdown_index = row_no * _dropdown_num_columns + column_no;
int dropdown_index = row_no * RCT2_GLOBAL(0x009DED44, sint32) + column_no; if (dropdown_index >= gDropdownNumItems) return -1;
// _dropdown_no_items
if (dropdown_index >= RCT2_GLOBAL(0x009DEBA0, sint16)) return -1;
return dropdown_index; return dropdown_index;
} }
@ -413,7 +419,7 @@ void window_dropdown_show_colour_available(rct_window *w, rct_widget *widget, ui
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
if (availableColours & (1 << i)) { if (availableColours & (1 << i)) {
if (selectedColour == i) if (selectedColour == i)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
gDropdownItemsFormat[i] = 0xFFFE; gDropdownItemsFormat[i] = 0xFFFE;
gDropdownItemsArgs[i] = ((uint64)i << 32) | (0x20000000 | (i << 19) | 5059); gDropdownItemsArgs[i] = ((uint64)i << 32) | (0x20000000 | (i << 19) | 5059);

View File

@ -39,6 +39,10 @@ extern uint64 gDropdownItemsChecked;
extern uint64 gDropdownItemsDisabled; extern uint64 gDropdownItemsDisabled;
extern bool gDropdownIsColour; extern bool gDropdownIsColour;
extern int gDropdownLastColourHover; extern int gDropdownLastColourHover;
extern int gDropdownHighlightedIndex;
void dropdown_set_checked(int index, bool value);
void dropdown_set_disabled(int index, bool value);
void window_dropdown_show_text(int x, int y, int extray, uint8 colour, uint8 flags, int num_items); void window_dropdown_show_text(int x, int y, int extray, uint8 colour, uint8 flags, int num_items);
void window_dropdown_show_text_custom_width(int x, int y, int extray, uint8 colour, uint8 flags, int num_items, int width); void window_dropdown_show_text_custom_width(int x, int y, int extray, uint8 colour, uint8 flags, int num_items, int width);

View File

@ -496,7 +496,7 @@ static void window_editor_objective_options_show_objective_dropdown(rct_window *
objectiveType = RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8); objectiveType = RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8);
for (i = 0; i < numItems; i++) { for (i = 0; i < numItems; i++) {
if (gDropdownItemsArgs[i] - STR_OBJECTIVE_DROPDOWN_NONE == objectiveType) { if (gDropdownItemsArgs[i] - STR_OBJECTIVE_DROPDOWN_NONE == objectiveType) {
gDropdownItemsChecked = (1 << i); dropdown_set_checked(i, true);
break; break;
} }
} }
@ -522,7 +522,7 @@ static void window_editor_objective_options_show_climate_dropdown(rct_window *w)
4, 4,
dropdownWidget->right - dropdownWidget->left - 3 dropdownWidget->right - dropdownWidget->left - 3
); );
gDropdownItemsChecked = (1 << RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE, uint8)); dropdown_set_checked(RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE, uint8), true);
} }
static void window_editor_objective_options_show_category_dropdown(rct_window *w) static void window_editor_objective_options_show_category_dropdown(rct_window *w)
@ -546,7 +546,7 @@ static void window_editor_objective_options_show_category_dropdown(rct_window *w
5, 5,
dropdownWidget->right - dropdownWidget->left - 3 dropdownWidget->right - dropdownWidget->left - 3
); );
gDropdownItemsChecked = (1 << s6Info->category); dropdown_set_checked(s6Info->category, true);
} }
static void window_editor_objective_options_arg_1_increase(rct_window *w) static void window_editor_objective_options_arg_1_increase(rct_window *w)

View File

@ -1035,7 +1035,7 @@ static void window_editor_scenario_options_park_mousedown(int widgetIndex, rct_w
dropdownWidget->right - dropdownWidget->left - 3 dropdownWidget->right - dropdownWidget->left - 3
); );
gDropdownItemsChecked = 1 << (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY ? 0 : 1); dropdown_set_checked((RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY ? 0 : 1), true);
break; break;
} }
} }

View File

@ -1298,7 +1298,7 @@ static void window_finances_research_mousedown(int widgetIndex, rct_window *w, r
); );
int currentResearchLevel = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL, uint8); int currentResearchLevel = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL, uint8);
gDropdownItemsChecked = (1 << currentResearchLevel); dropdown_set_checked(currentResearchLevel, true);
} }
/** /**

View File

@ -352,7 +352,7 @@ static void window_guest_list_mousedown(int widgetIndex, rct_window*w, rct_widge
gDropdownItemsFormat[i] = 1142; gDropdownItemsFormat[i] = 1142;
gDropdownItemsArgs[i] = STR_PAGE_1 + i; gDropdownItemsArgs[i] = STR_PAGE_1 + i;
} }
gDropdownItemsChecked = (1 << _window_guest_list_selected_view); dropdown_set_checked(_window_guest_list_selected_view, true);
break; break;
case WIDX_INFO_TYPE_DROPDOWN_BUTTON: case WIDX_INFO_TYPE_DROPDOWN_BUTTON:
widget = &w->widgets[widgetIndex - 1]; widget = &w->widgets[widgetIndex - 1];
@ -372,7 +372,7 @@ static void window_guest_list_mousedown(int widgetIndex, rct_window*w, rct_widge
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked = (1 << _window_guest_list_selected_view); dropdown_set_checked(_window_guest_list_selected_view, true);
break; break;
} }
} }

View File

@ -222,7 +222,7 @@ static void window_land_mousedown(int widgetIndex, rct_window*w, rct_widget* wid
gDropdownItemsFormat[i] = -1; gDropdownItemsFormat[i] = -1;
gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i]; gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i];
if (window_land_floor_texture_order[i] == _selectedFloorTexture) if (window_land_floor_texture_order[i] == _selectedFloorTexture)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
window_dropdown_show_image( window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, w->x + widget->left, w->y + widget->top,
@ -239,7 +239,7 @@ static void window_land_mousedown(int widgetIndex, rct_window*w, rct_widget* wid
gDropdownItemsFormat[i] = -1; gDropdownItemsFormat[i] = -1;
gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i]; gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i];
if (window_land_wall_texture_order[i] == _selectedWallTexture) if (window_land_wall_texture_order[i] == _selectedWallTexture)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
window_dropdown_show_image( window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, w->x + widget->left, w->y + widget->top,
@ -268,7 +268,7 @@ static void window_land_dropdown(rct_window *w, int widgetIndex, int dropdownInd
switch (widgetIndex) { switch (widgetIndex) {
case WIDX_FLOOR: case WIDX_FLOOR:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
type = (dropdownIndex == -1) ? type = (dropdownIndex == -1) ?
_selectedFloorTexture : _selectedFloorTexture :
@ -284,7 +284,7 @@ static void window_land_dropdown(rct_window *w, int widgetIndex, int dropdownInd
break; break;
case WIDX_WALL: case WIDX_WALL:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
type = (dropdownIndex == -1) ? type = (dropdownIndex == -1) ?
_selectedWallTexture : _selectedWallTexture :

View File

@ -536,7 +536,7 @@ static void window_mapgen_base_mousedown(int widgetIndex, rct_window *w, rct_wid
gDropdownItemsFormat[i] = -1; gDropdownItemsFormat[i] = -1;
gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i]; gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i];
if (window_land_floor_texture_order[i] == _floorTexture) if (window_land_floor_texture_order[i] == _floorTexture)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
window_dropdown_show_image( window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, w->x + widget->left, w->y + widget->top,
@ -553,7 +553,7 @@ static void window_mapgen_base_mousedown(int widgetIndex, rct_window *w, rct_wid
gDropdownItemsFormat[i] = -1; gDropdownItemsFormat[i] = -1;
gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i]; gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i];
if (window_land_wall_texture_order[i] == _wallTexture) if (window_land_wall_texture_order[i] == _wallTexture)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
window_dropdown_show_image( window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, w->x + widget->left, w->y + widget->top,
@ -575,7 +575,7 @@ static void window_mapgen_base_dropdown(rct_window *w, int widgetIndex, int drop
switch (widgetIndex) { switch (widgetIndex) {
case WIDX_FLOOR_TEXTURE: case WIDX_FLOOR_TEXTURE:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
type = (dropdownIndex == -1) ? type = (dropdownIndex == -1) ?
_floorTexture : _floorTexture :
@ -591,7 +591,7 @@ static void window_mapgen_base_dropdown(rct_window *w, int widgetIndex, int drop
break; break;
case WIDX_WALL_TEXTURE: case WIDX_WALL_TEXTURE:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
type = (dropdownIndex == -1) ? type = (dropdownIndex == -1) ?
_wallTexture : _wallTexture :
@ -859,7 +859,7 @@ static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_
gDropdownItemsFormat[i] = -1; gDropdownItemsFormat[i] = -1;
gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i]; gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i];
if (window_land_floor_texture_order[i] == _floorTexture) if (window_land_floor_texture_order[i] == _floorTexture)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
window_dropdown_show_image( window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, w->x + widget->left, w->y + widget->top,
@ -876,7 +876,7 @@ static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_
gDropdownItemsFormat[i] = -1; gDropdownItemsFormat[i] = -1;
gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i]; gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i];
if (window_land_wall_texture_order[i] == _wallTexture) if (window_land_wall_texture_order[i] == _wallTexture)
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
window_dropdown_show_image( window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, w->x + widget->left, w->y + widget->top,
@ -898,7 +898,7 @@ static void window_mapgen_simplex_dropdown(rct_window *w, int widgetIndex, int d
switch (widgetIndex) { switch (widgetIndex) {
case WIDX_SIMPLEX_FLOOR_TEXTURE: case WIDX_SIMPLEX_FLOOR_TEXTURE:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
type = (dropdownIndex == -1) ? type = (dropdownIndex == -1) ?
_floorTexture : _floorTexture :
@ -915,7 +915,7 @@ static void window_mapgen_simplex_dropdown(rct_window *w, int widgetIndex, int d
break; break;
case WIDX_SIMPLEX_WALL_TEXTURE: case WIDX_SIMPLEX_WALL_TEXTURE:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
type = (dropdownIndex == -1) ? type = (dropdownIndex == -1) ?
_wallTexture : _wallTexture :

View File

@ -715,8 +715,9 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, gNumResolutions); window_options_show_dropdown(w, widget, gNumResolutions);
if (selectedResolution != -1 && selectedResolution < 32) if (selectedResolution != -1 && selectedResolution < 32) {
gDropdownItemsChecked = 1 << selectedResolution; dropdown_set_checked(selectedResolution, true);
}
} }
break; break;
@ -730,7 +731,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, 3); window_options_show_dropdown(w, widget, 3);
gDropdownItemsChecked = 1 << gConfigGeneral.fullscreen_mode; dropdown_set_checked(gConfigGeneral.fullscreen_mode, true);
break; break;
case WIDX_CONSTRUCTION_MARKER_DROPDOWN: case WIDX_CONSTRUCTION_MARKER_DROPDOWN:
gDropdownItemsFormat[0] = 1142; gDropdownItemsFormat[0] = 1142;
@ -740,7 +741,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, 2); window_options_show_dropdown(w, widget, 2);
gDropdownItemsChecked = 1 << gConfigGeneral.construction_marker_colour; dropdown_set_checked(gConfigGeneral.construction_marker_colour, true);
break; break;
} }
break; break;
@ -755,7 +756,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, 2); window_options_show_dropdown(w, widget, 2);
gDropdownItemsChecked = gConfigGeneral.show_height_as_units ? 1 : 2; dropdown_set_checked(gConfigGeneral.show_height_as_units ? 1 : 2, true);
break; break;
case WIDX_CURRENCY_DROPDOWN: case WIDX_CURRENCY_DROPDOWN:
num_items = 10; num_items = 10;
@ -767,7 +768,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, num_items); window_options_show_dropdown(w, widget, num_items);
gDropdownItemsChecked = 1 << gConfigGeneral.currency_format; dropdown_set_checked(gConfigGeneral.currency_format, true);
break; break;
case WIDX_DISTANCE_DROPDOWN: case WIDX_DISTANCE_DROPDOWN:
gDropdownItemsFormat[0] = 1142; gDropdownItemsFormat[0] = 1142;
@ -777,7 +778,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, 2); window_options_show_dropdown(w, widget, 2);
gDropdownItemsChecked = 1 << gConfigGeneral.measurement_format; dropdown_set_checked(gConfigGeneral.measurement_format, true);
break; break;
case WIDX_TEMPERATURE_DROPDOWN: case WIDX_TEMPERATURE_DROPDOWN:
gDropdownItemsFormat[0] = 1142; gDropdownItemsFormat[0] = 1142;
@ -787,7 +788,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, 2); window_options_show_dropdown(w, widget, 2);
gDropdownItemsChecked = 1 << gConfigGeneral.temperature_format; dropdown_set_checked(gConfigGeneral.temperature_format, true);
break; break;
case WIDX_LANGUAGE_DROPDOWN: case WIDX_LANGUAGE_DROPDOWN:
for (i = 1; i < LANGUAGE_COUNT; i++) { for (i = 1; i < LANGUAGE_COUNT; i++) {
@ -795,7 +796,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
gDropdownItemsArgs[i - 1] = (sint32)LanguagesDescriptors[i].native_name; gDropdownItemsArgs[i - 1] = (sint32)LanguagesDescriptors[i].native_name;
} }
window_options_show_dropdown(w, widget, LANGUAGE_COUNT - 1); window_options_show_dropdown(w, widget, LANGUAGE_COUNT - 1);
gDropdownItemsChecked = 1 << (gCurrentLanguage - 1); dropdown_set_checked(gCurrentLanguage - 1, true);
break; break;
case WIDX_DATE_FORMAT_DROPDOWN: case WIDX_DATE_FORMAT_DROPDOWN:
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
@ -803,7 +804,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
gDropdownItemsArgs[i] = DateFormatStringIds[i]; gDropdownItemsArgs[i] = DateFormatStringIds[i];
} }
window_options_show_dropdown(w, widget, 4); window_options_show_dropdown(w, widget, 4);
gDropdownItemsChecked = 1 << (gConfigGeneral.date_format); dropdown_set_checked(gConfigGeneral.date_format, true);
break; break;
} }
break; break;
@ -821,7 +822,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, gAudioDeviceCount); window_options_show_dropdown(w, widget, gAudioDeviceCount);
gDropdownItemsChecked |= (1 << RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, uint32)); dropdown_set_checked(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_SOUND_DEVICE, uint32), true);
break; break;
case WIDX_TITLE_MUSIC_DROPDOWN: case WIDX_TITLE_MUSIC_DROPDOWN:
num_items = 4; num_items = 4;
@ -836,7 +837,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
window_options_show_dropdown(w, widget, num_items); window_options_show_dropdown(w, widget, num_items);
gDropdownItemsChecked = 1 << gConfigSound.title_music; dropdown_set_checked(gConfigSound.title_music, true);
break; break;
} }
break; break;
@ -866,10 +867,11 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
if (gCurrentTheme == 0 || gCurrentTheme == 1) if (gCurrentTheme == 0 || gCurrentTheme == 1) {
gDropdownItemsChecked = 1 << (gCurrentTheme ^ 1); dropdown_set_checked(gCurrentTheme ^ 1, true);
else } else {
gDropdownItemsChecked = 1 << (gCurrentTheme); dropdown_set_checked(gCurrentTheme, true);
}
break; break;
} }
break; break;
@ -883,7 +885,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
} }
window_options_show_dropdown(w, widget, AUTOSAVE_NEVER + 1); window_options_show_dropdown(w, widget, AUTOSAVE_NEVER + 1);
gDropdownItemsChecked = 1 << gConfigGeneral.autosave_frequency; dropdown_set_checked(gConfigGeneral.autosave_frequency, true);
break; break;
case WIDX_TITLE_SEQUENCE_DROPDOWN: case WIDX_TITLE_SEQUENCE_DROPDOWN:
num_items = gConfigTitleSequences.num_presets; num_items = gConfigTitleSequences.num_presets;
@ -903,7 +905,7 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget*
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked = 1 << (gCurrentPreviewTitleSequence); dropdown_set_checked(gCurrentPreviewTitleSequence, true);
break; break;
} }
break; break;

View File

@ -689,11 +689,11 @@ static void window_park_entrance_mousedown(int widgetIndex, rct_window*w, rct_wi
); );
if (park_is_open()) { if (park_is_open()) {
RCT2_GLOBAL(0x009DEBA2, sint16) = 0; gDropdownHighlightedIndex = 0;
gDropdownItemsChecked |= (1 << 1); dropdown_set_checked(1, true);
} else { } else {
RCT2_GLOBAL(0x009DEBA2, sint16) = 1; gDropdownHighlightedIndex = 1;
gDropdownItemsChecked |= (1 << 0); dropdown_set_checked(0, true);
} }
} }
} }
@ -706,7 +706,7 @@ static void window_park_entrance_dropdown(rct_window *w, int widgetIndex, int dr
{ {
if (widgetIndex == WIDX_OPEN_OR_CLOSE) { if (widgetIndex == WIDX_OPEN_OR_CLOSE) {
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
if (dropdownIndex != 0) { if (dropdownIndex != 0) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = 1724; RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = 1724;

View File

@ -465,7 +465,7 @@ static void window_research_funding_mousedown(int widgetIndex, rct_window *w, rc
); );
int currentResearchLevel = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL, uint8); int currentResearchLevel = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL, uint8);
gDropdownItemsChecked = (1 << currentResearchLevel); dropdown_set_checked(currentResearchLevel, true);
} }
/** /**

View File

@ -1769,7 +1769,7 @@ static void window_ride_show_view_dropdown(rct_window *w, rct_widget *widget)
} }
// Set checked item // Set checked item
gDropdownItemsChecked |= (1 << w->ride.view); dropdown_set_checked(w->ride.view, true);
} }
/** /**
@ -1844,8 +1844,8 @@ static void window_ride_show_open_dropdown(rct_window *w, rct_widget *widget)
highlightedIndex--; highlightedIndex--;
} }
gDropdownItemsChecked |= (1 << checkedIndex); dropdown_set_checked(checkedIndex, true);
RCT2_GLOBAL(0x009DEBA2, sint16) = highlightedIndex; gDropdownHighlightedIndex = highlightedIndex;
} }
/** /**
@ -1892,7 +1892,7 @@ static void window_ride_main_dropdown(rct_window *w, int widgetIndex, int dropdo
break; break;
case WIDX_OPEN: case WIDX_OPEN:
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
ride = GET_RIDE(w->number); ride = GET_RIDE(w->number);
if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_NO_TEST_MODE) && dropdownIndex != 0) if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_NO_TEST_MODE) && dropdownIndex != 0)
@ -2380,7 +2380,7 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = (1ULL << selectedIndex); dropdown_set_checked(selectedIndex, true);
break; break;
case WIDX_VEHICLE_TRAINS_DROPDOWN: case WIDX_VEHICLE_TRAINS_DROPDOWN:
window_dropdown_show_text_custom_width( window_dropdown_show_text_custom_width(
@ -2399,7 +2399,7 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
gDropdownItemsArgs[i] = ((i + 1) << 16) | (i == 0 ? stringId : stringId + 1); gDropdownItemsArgs[i] = ((i + 1) << 16) | (i == 0 ? stringId : stringId + 1);
} }
gDropdownItemsChecked = (1 << (ride->num_vehicles - 1)); dropdown_set_checked(ride->num_vehicles - 1, true);
break; break;
case WIDX_VEHICLE_CARS_PER_TRAIN_DROPDOWN: case WIDX_VEHICLE_CARS_PER_TRAIN_DROPDOWN:
minCars = (ride->min_max_cars_per_train >> 4); minCars = (ride->min_max_cars_per_train >> 4);
@ -2425,7 +2425,7 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
gDropdownItemsArgs[i] |= (cars - rideEntry->zero_cars) << 16; gDropdownItemsArgs[i] |= (cars - rideEntry->zero_cars) << 16;
} }
gDropdownItemsChecked = (1 << (ride->num_cars_per_train - minCars)); dropdown_set_checked(ride->num_cars_per_train - minCars, true);
break; break;
} }
} }
@ -2820,9 +2820,11 @@ static void window_ride_mode_dropdown(rct_window *w, rct_widget *widget)
); );
// Set checked item // Set checked item
for (i = 0; i < numAvailableModes; i++) for (i = 0; i < numAvailableModes; i++) {
if (ride->mode == availableModes[i]) if (ride->mode == availableModes[i]) {
gDropdownItemsChecked = 1 << i; dropdown_set_checked(i, true);
}
}
} }
/** /**
@ -2851,7 +2853,7 @@ static void window_ride_load_dropdown(rct_window *w, rct_widget *widget)
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = (1 << (ride->depart_flags & RIDE_DEPART_WAIT_FOR_LOAD_MASK)); dropdown_set_checked(ride->depart_flags & RIDE_DEPART_WAIT_FOR_LOAD_MASK, true);
} }
/** /**
@ -3366,7 +3368,7 @@ static void window_ride_maintenance_mousedown(int widgetIndex, rct_window *w, rc
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = (1 << ride->inspection_interval); dropdown_set_checked(ride->inspection_interval, true);
break; break;
case WIDX_FORCE_BREAKDOWN: case WIDX_FORCE_BREAKDOWN:
@ -3411,7 +3413,7 @@ static void window_ride_maintenance_mousedown(int widgetIndex, rct_window *w, rc
continue; continue;
} }
if (i == breakdownReason) { if (i == breakdownReason) {
gDropdownItemsChecked = (1 << num_items); dropdown_set_checked(num_items, true);
break; break;
} }
gDropdownItemsFormat[num_items] = 1142; gDropdownItemsFormat[num_items] = 1142;
@ -3813,7 +3815,7 @@ static void window_ride_colour_mousedown(int widgetIndex, rct_window *w, rct_wid
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = 1 << colourSchemeIndex; dropdown_set_checked(colourSchemeIndex, true);
break; break;
case WIDX_TRACK_MAIN_COLOUR: case WIDX_TRACK_MAIN_COLOUR:
window_dropdown_show_colour(w, widget, w->colours[1], ride->track_colour_main[colourSchemeIndex]); window_dropdown_show_colour(w, widget, w->colours[1], ride->track_colour_main[colourSchemeIndex]);
@ -3840,17 +3842,18 @@ static void window_ride_colour_mousedown(int widgetIndex, rct_window *w, rct_wid
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = 1 << ride->track_colour_supports[colourSchemeIndex]; dropdown_set_checked(ride->track_colour_supports[colourSchemeIndex], true);
break; break;
case WIDX_ENTRANCE_STYLE_DROPDOWN: case WIDX_ENTRANCE_STYLE_DROPDOWN:
for (i = 0; i < countof(window_ride_entrance_style_list); i++) { for (i = 0; i < countof(window_ride_entrance_style_list); i++) {
gDropdownItemsFormat[i] = 1142; gDropdownItemsFormat[i] = 1142;
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]) {
gDropdownItemsChecked = 1 << i; dropdown_set_checked(i, true);
} }
int checked = gDropdownItemsChecked; }
uint64 checked = gDropdownItemsChecked;
window_dropdown_show_text_custom_width( window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->x + dropdownWidget->left,
@ -3880,7 +3883,7 @@ static void window_ride_colour_mousedown(int widgetIndex, rct_window *w, rct_wid
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = 1 << (ride->colour_scheme_type & 3); dropdown_set_checked(ride->colour_scheme_type & 3, true);
break; break;
case WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN: case WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN:
numItems = ride->num_vehicles; numItems = ride->num_vehicles;
@ -3903,7 +3906,7 @@ static void window_ride_colour_mousedown(int widgetIndex, rct_window *w, rct_wid
widget->right - dropdownWidget->left widget->right - dropdownWidget->left
); );
gDropdownItemsChecked = 1 << w->var_48C; dropdown_set_checked(w->var_48C, true);
break; break;
case WIDX_VEHICLE_MAIN_COLOUR: case WIDX_VEHICLE_MAIN_COLOUR:
vehicleColour = ride_get_vehicle_colour(ride, w->var_48C); vehicleColour = ride_get_vehicle_colour(ride, w->var_48C);
@ -4452,8 +4455,9 @@ static void window_ride_music_mousedown(int widgetIndex, rct_window *w, rct_widg
); );
for (i = 0; i < numItems; i++) { for (i = 0; i < numItems; i++) {
if (window_ride_current_music_style_order[i] == ride->music) if (window_ride_current_music_style_order[i] == ride->music) {
gDropdownItemsChecked = (1 << i); dropdown_set_checked(i, true);
}
} }
} }
@ -4702,7 +4706,7 @@ static void window_ride_measurements_mousedown(int widgetIndex, rct_window *w, r
0, 0,
2 2
); );
RCT2_GLOBAL(0x009DEBA2, sint16) = 0; gDropdownHighlightedIndex = 0;
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_DESIGNER) if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_DESIGNER)
gDropdownItemsDisabled |= 2; gDropdownItemsDisabled |= 2;
} }
@ -4717,7 +4721,7 @@ static void window_ride_measurements_dropdown(rct_window *w, int widgetIndex, in
return; return;
if (dropdownIndex == -1) if (dropdownIndex == -1)
dropdownIndex = RCT2_GLOBAL(0x009DEBA2, sint16); dropdownIndex = gDropdownHighlightedIndex;
if (dropdownIndex == 0) if (dropdownIndex == 0)
save_track_design((uint8)w->number); save_track_design((uint8)w->number);

View File

@ -3161,7 +3161,7 @@ static void window_ride_construction_show_special_track_dropdown(rct_window *w,
} }
gDropdownItemsFormat[i] = trackPieceStringId; gDropdownItemsFormat[i] = trackPieceStringId;
if ((trackPiece | 0x100) == _currentTrackCurve) { if ((trackPiece | 0x100) == _currentTrackCurve) {
RCT2_GLOBAL(0x009DEBA2, sint16) = i; gDropdownHighlightedIndex = i;
} }
} }

View File

@ -263,7 +263,7 @@ static void window_ride_list_mousedown(int widgetIndex, rct_window*w, rct_widget
numItems, numItems,
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked |= (1 << _window_ride_list_information_type); dropdown_set_checked(_window_ride_list_information_type, true);
} }
} }

View File

@ -532,7 +532,7 @@ void window_staff_overview_mousedown(int widgetIndex, rct_window* w, rct_widget*
int y = widget->top + w->y; int y = widget->top + w->y;
int extray = widget->bottom - widget->top + 1; int extray = widget->bottom - widget->top + 1;
window_dropdown_show_text(x, y, extray, w->colours[1], 0, 2); window_dropdown_show_text(x, y, extray, w->colours[1], 0, 2);
RCT2_GLOBAL(0x009DEBA2, sint16) = 0; gDropdownHighlightedIndex = 0;
rct_peep* peep = GET_PEEP(w->number); rct_peep* peep = GET_PEEP(w->number);

View File

@ -552,10 +552,11 @@ static void window_themes_mousedown(int widgetIndex, rct_window* w, rct_widget*
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
if (gCurrentTheme == 0 || gCurrentTheme == 1) if (gCurrentTheme == 0 || gCurrentTheme == 1) {
gDropdownItemsChecked = 1 << (gCurrentTheme ^ 1); dropdown_set_checked(gCurrentTheme ^ 1, true);
else } else {
gDropdownItemsChecked = 1 << (gCurrentTheme); dropdown_set_checked(gCurrentTheme, true);
}
break; break;
case WIDX_THEMES_RCT1_RIDE_LIGHTS: case WIDX_THEMES_RCT1_RIDE_LIGHTS:
if (gCurrentTheme >= 2) { if (gCurrentTheme >= 2) {

View File

@ -322,7 +322,7 @@ static void window_title_command_editor_mousedown(int widgetIndex, rct_window* w
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked = 1 << get_command_info_index(command.command); dropdown_set_checked(get_command_info_index(command.command), true);
break; break;
case WIDX_INPUT_DROPDOWN: case WIDX_INPUT_DROPDOWN:
if (command.command == TITLE_SCRIPT_SPEED) { if (command.command == TITLE_SCRIPT_SPEED) {
@ -342,7 +342,7 @@ static void window_title_command_editor_mousedown(int widgetIndex, rct_window* w
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked = 1 << (command.speed - 1); dropdown_set_checked(command.speed - 1, true);
} }
else if (command.command == TITLE_SCRIPT_LOAD) { else if (command.command == TITLE_SCRIPT_LOAD) {
num_items = gConfigTitleSequences.presets[gCurrentTitleSequence].num_saves; num_items = gConfigTitleSequences.presets[gCurrentTitleSequence].num_saves;
@ -361,7 +361,7 @@ static void window_title_command_editor_mousedown(int widgetIndex, rct_window* w
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked = 1 << (command.saveIndex); dropdown_set_checked(command.saveIndex, true);
} }
break; break;
} }

View File

@ -587,7 +587,7 @@ static void window_title_editor_mousedown(int widgetIndex, rct_window* w, rct_wi
widget->right - widget->left - 3 widget->right - widget->left - 3
); );
gDropdownItemsChecked = 1 << (gCurrentTitleSequence); dropdown_set_checked(gCurrentTitleSequence, true);
} }
break; break;
} }

View File

@ -411,8 +411,9 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
); );
#ifndef DISABLE_TWITCH #ifndef DISABLE_TWITCH
if (_menuDropdownIncludesTwitch && gTwitchEnable) if (_menuDropdownIncludesTwitch && gTwitchEnable) {
gDropdownItemsChecked |= (1 << 11); dropdown_set_checked(11, true);
}
#endif #endif
break; break;
case WIDX_CHEATS: case WIDX_CHEATS:
@ -433,12 +434,15 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
0, 0,
5 5
); );
if (gCheatsSandboxMode) if (gCheatsSandboxMode) {
gDropdownItemsChecked |= (1 << DDIDX_ENABLE_SANDBOX_MODE); dropdown_set_checked(DDIDX_ENABLE_SANDBOX_MODE, true);
if (gCheatsDisableClearanceChecks) }
gDropdownItemsChecked |= (1 << DDIDX_DISABLE_CLEARANCE_CHECKS); if (gCheatsDisableClearanceChecks) {
if (gCheatsDisableSupportLimits) dropdown_set_checked(DDIDX_DISABLE_CLEARANCE_CHECKS, true);
gDropdownItemsChecked |= (1 << DDIDX_DISABLE_SUPPORT_LIMITS); }
if (gCheatsDisableSupportLimits) {
dropdown_set_checked(DDIDX_DISABLE_SUPPORT_LIMITS, true);
}
RCT2_GLOBAL(0x009DEBA2, uint16) = 0; RCT2_GLOBAL(0x009DEBA2, uint16) = 0;
break; break;
case WIDX_VIEW_MENU: case WIDX_VIEW_MENU:
@ -2844,10 +2848,12 @@ void top_toolbar_init_fastforward_menu(rct_window* w, rct_widget* widget) {
); );
// Set checkmarks // Set checkmarks
if (gGameSpeed <= 4) if (gGameSpeed <= 4) {
gDropdownItemsChecked |= (1 << (gGameSpeed - 1)); dropdown_set_checked(gGameSpeed - 1, true);
if (gGameSpeed == 8) }
gDropdownItemsChecked |= (1 << 5); if (gGameSpeed == 8) {
dropdown_set_checked(5, true);
}
if (gConfigGeneral.debugging_tools) if (gConfigGeneral.debugging_tools)
RCT2_GLOBAL(0x9DEBA2, uint16) = (gGameSpeed == 8 ? 0 : gGameSpeed); RCT2_GLOBAL(0x9DEBA2, uint16) = (gGameSpeed == 8 ? 0 : gGameSpeed);
@ -3011,25 +3017,25 @@ void top_toolbar_init_view_menu(rct_window* w, rct_widget* widget) {
// Set checkmarks // Set checkmarks
rct_viewport* mainViewport = window_get_main()->viewport; rct_viewport* mainViewport = window_get_main()->viewport;
if (mainViewport->flags & VIEWPORT_FLAG_UNDERGROUND_INSIDE) if (mainViewport->flags & VIEWPORT_FLAG_UNDERGROUND_INSIDE)
gDropdownItemsChecked |= (1 << 0); dropdown_set_checked(0, true);
if (mainViewport->flags & VIEWPORT_FLAG_HIDE_BASE) if (mainViewport->flags & VIEWPORT_FLAG_HIDE_BASE)
gDropdownItemsChecked |= (1 << 1); dropdown_set_checked(1, true);
if (mainViewport->flags & VIEWPORT_FLAG_HIDE_VERTICAL) if (mainViewport->flags & VIEWPORT_FLAG_HIDE_VERTICAL)
gDropdownItemsChecked |= (1 << 2); dropdown_set_checked(2, true);
if (mainViewport->flags & VIEWPORT_FLAG_SEETHROUGH_RIDES) if (mainViewport->flags & VIEWPORT_FLAG_SEETHROUGH_RIDES)
gDropdownItemsChecked |= (1 << 4); dropdown_set_checked(4, true);
if (mainViewport->flags & VIEWPORT_FLAG_SEETHROUGH_SCENERY) if (mainViewport->flags & VIEWPORT_FLAG_SEETHROUGH_SCENERY)
gDropdownItemsChecked |= (1 << 5); dropdown_set_checked(5, true);
if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS)
gDropdownItemsChecked |= (1 << 6); dropdown_set_checked(6, true);
if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS) if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS)
gDropdownItemsChecked |= (1 << 7); dropdown_set_checked(7, true);
if (mainViewport->flags & VIEWPORT_FLAG_LAND_HEIGHTS) if (mainViewport->flags & VIEWPORT_FLAG_LAND_HEIGHTS)
gDropdownItemsChecked |= (1 << 9); dropdown_set_checked(9, true);
if (mainViewport->flags & VIEWPORT_FLAG_TRACK_HEIGHTS) if (mainViewport->flags & VIEWPORT_FLAG_TRACK_HEIGHTS)
gDropdownItemsChecked |= (1 << 10); dropdown_set_checked(10, true);
if (mainViewport->flags & VIEWPORT_FLAG_PATH_HEIGHTS) if (mainViewport->flags & VIEWPORT_FLAG_PATH_HEIGHTS)
gDropdownItemsChecked |= (1 << 11); dropdown_set_checked(11, true);
RCT2_GLOBAL(0x9DEBA2, uint16) = 0; RCT2_GLOBAL(0x9DEBA2, uint16) = 0;
} }