refactor window hold down widgets (var_020)

This commit is contained in:
IntelOrca 2015-02-10 20:40:33 +00:00
parent f6c09b44b6
commit 0db1c88f2b
14 changed files with 143 additions and 97 deletions

View File

@ -911,9 +911,8 @@ void process_mouse_tool(int x, int y)
*
* rct2: 0x006E8DA7
*/
void input_state_widget_pressed( int x, int y, int state, int widgetIndex, rct_window* w, rct_widget* widget ){
//RCT2_CALLPROC_X(0x006E8DA7, x, y, state, widgetIndex, (int)w, (int)widget, 0);
//return;
void input_state_widget_pressed(int x, int y, int state, int widgetIndex, rct_window *w, rct_widget *widget)
{
RCT2_GLOBAL(0x1420054, uint16) = x;
RCT2_GLOBAL(0x1420056, uint16) = y;
@ -923,11 +922,11 @@ void input_state_widget_pressed( int x, int y, int state, int widgetIndex, rct_w
cursor_w_number = RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_DOWN_WINDOWNUMBER, rct_windownumber);
int cursor_widgetIndex = RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_DOWN_WIDGETINDEX, uint32);
rct_window* cursor_w = window_find_by_number(cursor_w_class, cursor_w_number);
rct_window *cursor_w = window_find_by_number(cursor_w_class, cursor_w_number);
if (cursor_w == NULL) {
RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, uint8) = 0;
return;
}
}
switch (state){
case 0:
@ -935,28 +934,30 @@ void input_state_widget_pressed( int x, int y, int state, int widgetIndex, rct_w
break;
if (w->disabled_widgets & (1ULL << widgetIndex))
break;
break;
if (RCT2_GLOBAL(0x9DE528, uint16) != 0) RCT2_GLOBAL(0x9DE528, uint16)++;
if (RCT2_GLOBAL(0x009DE528, uint16) != 0)
RCT2_GLOBAL(0x009DE528, uint16)++;
if (w->var_020 & (1ULL << widgetIndex) &&
RCT2_GLOBAL(0x9DE528, uint16) >= 0x10 &&
(!(RCT2_GLOBAL(0x9DE528, uint16) & 0x3))){
if (w->hold_down_widgets & (1ULL << widgetIndex) &&
RCT2_GLOBAL(0x009DE528, uint16) >= 16 &&
!(RCT2_GLOBAL(0x009DE528, uint16) & 3)
) {
window_event_mouse_down_call(w, widgetIndex);
}
}
if (RCT2_GLOBAL(0x9DE518, uint32) & 1) return;
if (RCT2_GLOBAL(0x009DE518, uint32) & 1) return;
RCT2_GLOBAL(0x9DE518, uint32) |= 1;
RCT2_GLOBAL(0x009DE518, uint32) |= 1;
widget_invalidate_by_number(cursor_w_class, cursor_w_number, widgetIndex);
return;
case 3:
case 2:
if (RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, uint8) == 5){
if (RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, uint8) == 5) {
if (w) {
int dropdown_index = 0;
if (w->classification == WC_DROPDOWN){
if (w->classification == WC_DROPDOWN) {
dropdown_index = dropdown_index_from_point(x, y, w);
if (dropdown_index == -1)goto dropdown_cleanup;
@ -965,8 +966,7 @@ void input_state_widget_pressed( int x, int y, int state, int widgetIndex, rct_w
// gDropdownItemsFormat[dropdown_index] will not work until all windows that use dropdown decompiled
if (RCT2_ADDRESS(0x9DEBA4, uint16)[dropdown_index] == 0)goto dropdown_cleanup;
}
else{
} else {
if (cursor_w_class != w->classification || cursor_w_number != w->number || widgetIndex != cursor_widgetIndex)
goto dropdown_cleanup;
dropdown_index = -1;
@ -974,16 +974,16 @@ void input_state_widget_pressed( int x, int y, int state, int widgetIndex, rct_w
if (!(RCT2_GLOBAL(0x9DE518, uint32) & 4)){
RCT2_GLOBAL(0x9DE518, uint32) |= (1 << 2);
return;
}
}
}
}
}
}
window_close_by_class(WC_DROPDOWN);
cursor_w = window_find_by_number(cursor_w_class, cursor_w_number);
if (RCT2_GLOBAL(0x9DE518, uint32) & 1){
if (RCT2_GLOBAL(0x9DE518, uint32) & 1) {
RCT2_GLOBAL(0x9DE518, uint32) &= 0xFFFE;
widget_invalidate_by_number(cursor_w_class, cursor_w_number, cursor_widgetIndex);
}
}
RCT2_GLOBAL(RCT2_ADDRESS_INPUT_STATE, uint8) = 1;
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_TIMEOUT, uint16) = 0;

View File

@ -417,7 +417,7 @@ rct_window *window_create(int x, int y, int width, int height, uint32 *event_han
w->enabled_widgets = 0;
w->disabled_widgets = 0;
w->pressed_widgets = 0;
w->var_020 = 0;
w->hold_down_widgets = 0;
w->viewport_focus_coordinates.var_480 = 0;
w->viewport_focus_coordinates.x = 0;
w->viewport_focus_coordinates.y = 0;

View File

@ -190,7 +190,7 @@ typedef struct rct_window {
uint64 enabled_widgets; // 0x008
uint64 disabled_widgets; // 0x010
uint64 pressed_widgets; // 0x018
uint64 var_020;
uint64 hold_down_widgets; // 0x020
rct_widget* widgets; // 0x028
sint16 x; // 0x02C
sint16 y; // 0x02E

View File

@ -231,6 +231,15 @@ static uint64 window_editor_objective_options_page_enabled_widgets[] = {
(1 << WIDX_TAB_2)
};
static uint64 window_editor_objective_options_page_hold_down_widgets[] = {
(1 << WIDX_OBJECTIVE_ARG_1_INCREASE) |
(1 << WIDX_OBJECTIVE_ARG_1_DECREASE) |
(1 << WIDX_OBJECTIVE_ARG_2_INCREASE) |
(1 << WIDX_OBJECTIVE_ARG_2_DECREASE),
0
};
#pragma endregion
/**
@ -255,12 +264,12 @@ void window_editor_objective_options_open()
WF_10
);
w->widgets = window_editor_objective_options_main_widgets;
w->enabled_widgets = window_editor_objective_options_page_enabled_widgets[0];
w->enabled_widgets = window_editor_objective_options_page_enabled_widgets[WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN];
w->pressed_widgets = 0;
w->var_020 = 0x00003600;
w->hold_down_widgets = window_editor_objective_options_page_hold_down_widgets[WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN];
window_init_scroll_widgets(w);
w->var_4AE = 0;
w->selected_tab = 0;
w->selected_tab = WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN;
w->no_list_items = 0;
w->selected_list_item = -1;
RCT2_CALLPROC_X(0x00672609, 0, 0, 0, 0, (int)w, 0, 0);
@ -328,7 +337,7 @@ static void window_editor_objective_options_set_page(rct_window *w, int page)
w->no_list_items = 0;
w->selected_list_item = -1;
w->enabled_widgets = window_editor_objective_options_page_enabled_widgets[page];
w->var_020 = page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN ? 0x3600 : 0;
w->hold_down_widgets = window_editor_objective_options_page_hold_down_widgets[page];
w->event_handlers = window_editor_objective_options_page_events[page];
w->widgets = window_editor_objective_options_widgets[page];
window_invalidate(w);

View File

@ -319,7 +319,7 @@ static uint64 window_editor_scenario_options_page_enabled_widgets[] = {
0x007F7B74
};
static uint32 dword_9A9DE8[] = {
static uint32 window_editor_scenario_options_page_hold_down_widgets[] = {
0x000DB600,
0x0006DB00,
0x00031B00
@ -350,7 +350,7 @@ void window_editor_scenario_options_open()
);
w->widgets = window_editor_scenario_options_widgets[0];
w->enabled_widgets = window_editor_scenario_options_page_enabled_widgets[0];
w->var_020 = dword_9A9DE8[0];
w->hold_down_widgets = window_editor_scenario_options_page_hold_down_widgets[0];
window_init_scroll_widgets(w);
w->var_4AE = 0;
w->page = 0;
@ -422,7 +422,7 @@ static void window_editor_scenario_options_set_page(rct_window *w, int page)
w->frame_no = 0;
w->var_492 = 0;
w->enabled_widgets = window_editor_scenario_options_page_enabled_widgets[page];
w->var_020 = dword_9A9DE8[page];
w->hold_down_widgets = window_editor_scenario_options_page_hold_down_widgets[page];
w->event_handlers = window_editor_scenario_options_page_events[page];
w->widgets = window_editor_scenario_options_widgets[page];
window_invalidate(w);

View File

@ -508,6 +508,17 @@ static uint32 window_finances_page_enabled_widgets[] = {
(1 << WIDX_SCENERY_AND_THEMING)
};
static uint32 window_finances_page_hold_down_widgets[] = {
(1 << WIDX_LOAN_INCREASE) |
(1 << WIDX_LOAN_DECREASE),
0,
0,
0,
0,
0
};
#pragma endregion
const int window_finances_tab_animation_loops[] = { 16, 32, 32, 32, 38, 16 };
@ -527,28 +538,24 @@ void window_finances_open()
w = window_bring_to_front_by_class(WC_FINANCES);
if (w == NULL) {
w = window_create_auto_pos(530, 257, window_finances_page_events[0], WC_FINANCES, WF_10);
w->widgets = window_finances_page_widgets[0];
w->enabled_widgets = 0x1BF4;
w->number = 0;
w->page = 0;
w->frame_no = 0;
w->disabled_widgets = 0;
w->colours[0] = 1;
w->colours[1] = 19;
w->colours[2] = 19;
research_update_uncompleted_types();
}
w->page = 0;
w->page = WINDOW_FINANCES_PAGE_SUMMARY;
window_invalidate(w);
w->width = 530;
w->height = 257;
window_invalidate(w);
w->widgets = window_finances_page_widgets[0];
w->enabled_widgets = window_finances_page_enabled_widgets[0];
w->var_020 = RCT2_GLOBAL(0x00988E3C, uint32);
w->event_handlers = window_finances_page_events[0];
w->widgets = window_finances_page_widgets[WINDOW_FINANCES_PAGE_SUMMARY];
w->enabled_widgets = window_finances_page_enabled_widgets[WINDOW_FINANCES_PAGE_SUMMARY];
w->hold_down_widgets = window_finances_page_hold_down_widgets[WINDOW_FINANCES_PAGE_SUMMARY];
w->event_handlers = window_finances_page_events[WINDOW_FINANCES_PAGE_SUMMARY];
w->pressed_widgets = 0;
w->disabled_widgets = 0;
window_init_scroll_widgets(w);
@ -1489,7 +1496,7 @@ static void window_finances_set_page(rct_window *w, int page)
}
w->enabled_widgets = window_finances_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x00988E3C, uint32)[page];
w->hold_down_widgets = window_finances_page_hold_down_widgets[page];
w->event_handlers = window_finances_page_events[page];
w->widgets = window_finances_page_widgets[page];
w->disabled_widgets = 0;

View File

@ -516,7 +516,7 @@ void window_guest_open(rct_peep* peep){
window->widgets = window_guest_page_widgets[WINDOW_GUEST_OVERVIEW];
window->enabled_widgets = window_guest_page_enabled_widgets[WINDOW_GUEST_OVERVIEW];
window->var_020 = RCT2_GLOBAL(0x981D54,uint32);
window->hold_down_widgets = 0;
window->event_handlers = window_guest_page_events[WINDOW_GUEST_OVERVIEW];
window->pressed_widgets = 0;
@ -670,7 +670,7 @@ void window_guest_set_page(rct_window* w, int page){
}
w->enabled_widgets = window_guest_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x981D54,uint32)[page];
w->hold_down_widgets = 0;
w->event_handlers = window_guest_page_events[page];
w->pressed_widgets = 0;
w->widgets = window_guest_page_widgets[page];

View File

@ -165,7 +165,9 @@ void window_map_open()
(1 << WIDX_BUILD_PARK_ENTRANCE) |
(1 << WIDX_ROTATE_90) |
(1 << WIDX_PEOPLE_STARTING_POSITION);
w->var_020 |= 0x300;
w->hold_down_widgets =
(1 << WIDX_MAP_SIZE_SPINNER_UP) |
(1 << WIDX_MAP_SIZE_SPINNER_DOWN);
window_init_scroll_widgets(w);
window_map_set_bounds(w);

View File

@ -284,7 +284,7 @@ rct_window *window_mapgen_open()
window_invalidate(w);
w->widgets = window_mapgen_page_widgets[WINDOW_MAPGEN_PAGE_BASE];
w->enabled_widgets = window_mapgen_page_enabled_widgets[WINDOW_MAPGEN_PAGE_BASE];
w->var_020 = window_mapgen_page_hold_down_widgets[WINDOW_MAPGEN_PAGE_BASE];
w->hold_down_widgets = window_mapgen_page_hold_down_widgets[WINDOW_MAPGEN_PAGE_BASE];
w->event_handlers = window_mapgen_page_events[WINDOW_MAPGEN_PAGE_BASE];
w->pressed_widgets = 0;
w->disabled_widgets = 0;
@ -585,7 +585,7 @@ static void window_mapgen_set_page(rct_window *w, int page)
}
w->enabled_widgets = window_mapgen_page_enabled_widgets[page];
w->var_020 = window_mapgen_page_hold_down_widgets[page];
w->hold_down_widgets = window_mapgen_page_hold_down_widgets[page];
w->event_handlers = window_mapgen_page_events[page];
w->widgets = window_mapgen_page_widgets[page];
w->disabled_widgets = 0;

View File

@ -152,7 +152,9 @@ void window_new_campaign_open(sint16 campaignType)
(1 << WIDX_WEEKS_INCREASE_BUTTON) |
(1 << WIDX_WEEKS_DECREASE_BUTTON) |
(1 << WIDX_START_BUTTON);
w->var_020 = 0x300;
w->hold_down_widgets =
(1 << WIDX_WEEKS_INCREASE_BUTTON) |
(1 << WIDX_WEEKS_DECREASE_BUTTON);
window_init_scroll_widgets(w);
w->colours[0] = 19;
w->colours[1] = 19;

View File

@ -572,6 +572,19 @@ static uint32 window_park_page_enabled_widgets[] = {
(1 << WIDX_TAB_7)
};
static uint32 window_park_page_hold_down_widgets[] = {
0,
0,
0,
(1 << WIDX_INCREASE_PRICE) |
(1 << WIDX_DECREASE_PRICE),
0,
0,
0
};
#pragma endregion
static void window_park_init_viewport(rct_window *w);
@ -1068,7 +1081,7 @@ void window_park_rating_open()
window_invalidate(window);
window->widgets = window_park_rating_widgets;
window->enabled_widgets = window_park_page_enabled_widgets[WINDOW_PARK_PAGE_RATING];
window->var_020 = 0;
window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_RATING];
window->event_handlers = (uint32*)window_park_rating_events;
window_init_scroll_widgets(window);
}
@ -1200,7 +1213,7 @@ void window_park_guests_open()
window_invalidate(window);
window->widgets = window_park_guests_widgets;
window->enabled_widgets = window_park_page_enabled_widgets[WINDOW_PARK_PAGE_GUESTS];
window->var_020 = 0;
window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_GUESTS];
window->event_handlers = (uint32*)window_park_guests_events;
window_init_scroll_widgets(window);
}
@ -1600,7 +1613,7 @@ void window_park_objective_open()
window_invalidate(window);
window->widgets = window_park_objective_widgets;
window->enabled_widgets = window_park_page_enabled_widgets[WINDOW_PARK_PAGE_OBJECTIVE];
window->var_020 = 0;
window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_OBJECTIVE];
window->event_handlers = (uint32*)window_park_objective_events;
window_init_scroll_widgets(window);
window->x = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, sint16) / 2 - 115;
@ -1787,7 +1800,7 @@ void window_park_awards_open()
window_invalidate(window);
window->widgets = window_park_awards_widgets;
window->enabled_widgets = window_park_page_enabled_widgets[WINDOW_PARK_PAGE_AWARDS];
window->var_020 = 0;
window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_AWARDS];
window->event_handlers = (uint32*)window_park_awards_events;
window_init_scroll_widgets(window);
}
@ -1922,7 +1935,7 @@ static void window_park_set_page(rct_window *w, int page)
}
w->enabled_widgets = window_park_page_enabled_widgets[page];
w->var_020 = RCT2_GLOBAL(0x0097BAE0 + (page * 4), uint32);
w->hold_down_widgets = window_park_page_hold_down_widgets[page];
w->event_handlers = window_park_page_events[page];
w->widgets = window_park_page_widgets[page];
window_park_set_disabled_tabs(w);

View File

@ -249,7 +249,7 @@ void window_research_open()
w->widgets = window_research_page_widgets[0];
w->enabled_widgets = window_research_page_enabled_widgets[0];
w->var_020 = RCT2_GLOBAL(0x00988E3C, uint32);
w->hold_down_widgets = 0;
w->event_handlers = window_research_page_events[0];
w->pressed_widgets = 0;
w->disabled_widgets = 0;
@ -591,7 +591,7 @@ static void window_research_set_page(rct_window *w, int page)
}
w->enabled_widgets = window_research_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x00988E3C, uint32)[page];
w->hold_down_widgets = 0;
w->event_handlers = window_research_page_events[page];
w->widgets = window_research_page_widgets[page];
w->disabled_widgets = 0;

View File

@ -36,18 +36,18 @@
#define var_496(w) RCT2_GLOBAL((int)w + 0x496, uint16)
enum WINDOW_PARK_PAGE {
WINDOW_PARK_PAGE_MAIN,
WINDOW_PARK_PAGE_VEHICLE,
WINDOW_PARK_PAGE_OPERATING,
WINDOW_PARK_PAGE_MAINTENANCE,
WINDOW_PARK_PAGE_COLOUR,
WINDOW_PARK_PAGE_MUSIC,
WINDOW_PARK_PAGE_MEASUREMENTS,
WINDOW_PARK_PAGE_GRAPHS,
WINDOW_PARK_PAGE_INCOME,
WINDOW_PARK_PAGE_CUSTOMER,
WINDOW_PARK_PAGE_COUNT
enum {
WINDOW_RIDE_PAGE_MAIN,
WINDOW_RIDE_PAGE_VEHICLE,
WINDOW_RIDE_PAGE_OPERATING,
WINDOW_RIDE_PAGE_MAINTENANCE,
WINDOW_RIDE_PAGE_COLOUR,
WINDOW_RIDE_PAGE_MUSIC,
WINDOW_RIDE_PAGE_MEASUREMENTS,
WINDOW_RIDE_PAGE_GRAPHS,
WINDOW_RIDE_PAGE_INCOME,
WINDOW_RIDE_PAGE_CUSTOMER,
WINDOW_RIDE_PAGE_COUNT
};
#pragma region Widgets
@ -489,6 +489,19 @@ const uint64 window_ride_page_enabled_widgets[] = {
0x000000000001FFF4
};
const uint64 window_ride_page_hold_down_widgets[] = {
0x0000000000000000,
0x0000000000000000,
0x00000000330D8000,
0x0000000000000000,
0x0000000000000000,
0x0000000000000000,
0x0000000000000000,
0x0000000000000000,
0x0000000000630000,
0x0000000000000000
};
#pragma endregion
#pragma region Events
@ -944,7 +957,7 @@ static void window_ride_draw_tab_image(rct_drawpixelinfo *dpi, rct_window *w, in
*/
static void window_ride_draw_tab_main(rct_drawpixelinfo *dpi, rct_window *w)
{
int widgetIndex = WIDX_TAB_1 + WINDOW_PARK_PAGE_MAIN;
int widgetIndex = WIDX_TAB_1 + WINDOW_RIDE_PAGE_MAIN;
if (!(w->disabled_widgets & (1LL << widgetIndex))) {
int spriteIndex;
@ -953,17 +966,17 @@ static void window_ride_draw_tab_main(rct_drawpixelinfo *dpi, rct_window *w)
switch (gRideClassifications[rideType]) {
case RIDE_CLASS_RIDE:
spriteIndex = 5442;
if (w->page == WINDOW_PARK_PAGE_MAIN)
if (w->page == WINDOW_RIDE_PAGE_MAIN)
spriteIndex += (w->frame_no / 4) % 16;
break;
case RIDE_CLASS_SHOP_OR_STALL:
spriteIndex = 5351;
if (w->page == WINDOW_PARK_PAGE_MAIN)
if (w->page == WINDOW_RIDE_PAGE_MAIN)
spriteIndex += (w->frame_no / 4) % 16;
break;
case RIDE_CLASS_KIOSK_OR_FACILITY:
spriteIndex = 5367;
if (w->page == WINDOW_PARK_PAGE_MAIN)
if (w->page == WINDOW_RIDE_PAGE_MAIN)
spriteIndex += (w->frame_no / 4) % 8;
break;
}
@ -985,7 +998,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo *dpi, rct_window *w)
rct_ride_type *rideEntry;
vehicle_colour vehicleColour;
widgetIndex = WIDX_TAB_1 + WINDOW_PARK_PAGE_VEHICLE;
widgetIndex = WIDX_TAB_1 + WINDOW_RIDE_PAGE_VEHICLE;
widget = &w->widgets[widgetIndex];
if (!(w->disabled_widgets & (1LL << widgetIndex))) {
@ -993,7 +1006,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo *dpi, rct_window *w)
y = widget->top + 1;
width = widget->right - x;
height = widget->bottom - 3 - y;
if (w->page == WINDOW_PARK_PAGE_VEHICLE)
if (w->page == WINDOW_RIDE_PAGE_VEHICLE)
height += 4;
x += w->x;
@ -1026,7 +1039,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo *dpi, rct_window *w)
vehicleColour = ride_get_vehicle_colour(ride, 0);
spriteIndex = 32;
if (w->page == WINDOW_PARK_PAGE_VEHICLE)
if (w->page == WINDOW_RIDE_PAGE_VEHICLE)
spriteIndex += w->frame_no;
spriteIndex /= (RCT2_GLOBAL(ebp + 0x2C, uint16) & 0x800) ? 4 : 2;
spriteIndex &= RCT2_GLOBAL(ebp + 0x1A, uint16);
@ -1047,12 +1060,12 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo *dpi, rct_window *w)
static void window_ride_draw_tab_customer(rct_drawpixelinfo *dpi, rct_window *w)
{
int spriteIndex;
int widgetIndex = WIDX_TAB_1 + WINDOW_PARK_PAGE_CUSTOMER;
int widgetIndex = WIDX_TAB_1 + WINDOW_RIDE_PAGE_CUSTOMER;
rct_widget *widget = &w->widgets[widgetIndex];
if (!(w->disabled_widgets & (1LL << widgetIndex))) {
spriteIndex = 0;
if (w->page == WINDOW_PARK_PAGE_CUSTOMER)
if (w->page == WINDOW_RIDE_PAGE_CUSTOMER)
spriteIndex = w->var_492 & ~3;
spriteIndex += RCT2_GLOBAL(RCT2_GLOBAL(0x00982708, uint32), uint32);
@ -1070,15 +1083,15 @@ static void window_ride_draw_tab_customer(rct_drawpixelinfo *dpi, rct_window *w)
static void window_ride_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w)
{
window_ride_draw_tab_vehicle(dpi, w);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_OPERATING, 5201);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_MAINTENANCE, 5205);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_INCOME, 5253);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_OPERATING, 5201);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_MAINTENANCE, 5205);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_INCOME, 5253);
window_ride_draw_tab_main(dpi, w);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_MEASUREMENTS, 5229);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_COLOUR, 5221);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_GRAPHS, 5237);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_MEASUREMENTS, 5229);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_COLOUR, 5221);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_GRAPHS, 5237);
window_ride_draw_tab_customer(dpi, w);
window_ride_draw_tab_image(dpi, w, WINDOW_PARK_PAGE_MUSIC, 5335);
window_ride_draw_tab_image(dpi, w, WINDOW_RIDE_PAGE_MUSIC, 5335);
}
/**
@ -1150,14 +1163,14 @@ rct_window *window_ride_main_open(int rideIndex)
}
}
w->page = 0;
w->page = WINDOW_RIDE_PAGE_MAIN;
w->width = 316;
w->height = 180;
window_invalidate(w);
w->widgets = window_ride_page_widgets[0];
w->enabled_widgets = 0x007DBFF4;
w->var_020 = 0;
w->event_handlers = window_ride_page_events[0];
w->widgets = window_ride_page_widgets[WINDOW_RIDE_PAGE_MAIN];
w->enabled_widgets = window_ride_page_enabled_widgets[WINDOW_RIDE_PAGE_MAIN];
w->hold_down_widgets = window_ride_page_hold_down_widgets[WINDOW_RIDE_PAGE_MAIN];
w->event_handlers = window_ride_page_events[WINDOW_RIDE_PAGE_MAIN];
w->pressed_widgets = 0;
RCT2_CALLPROC_X(0x006AEB9F, 0, 0, 0, 0, (int)w, 0, 0);
window_init_scroll_widgets(w);
@ -1196,14 +1209,14 @@ rct_window *window_ride_open_station(int rideIndex, int stationIndex)
tool_cancel();
}
w->page = WINDOW_PARK_PAGE_MAIN;
w->page = WINDOW_RIDE_PAGE_MAIN;
w->width = 316;
w->height = 180;
window_invalidate(w);
w->widgets = window_ride_page_widgets[w->page];
w->enabled_widgets = window_ride_page_enabled_widgets[w->page];
w->var_020 = RCT2_ADDRESS(0x0098DD68, uint32)[w->page];
w->hold_down_widgets = window_ride_page_hold_down_widgets[w->page];
w->event_handlers = window_ride_page_events[w->page];
w->pressed_widgets = 0;
RCT2_CALLPROC_X(0x006AEB9F, 0, 0, 0, 0, (int)w, 0, 0);
@ -1305,14 +1318,14 @@ rct_window *window_ride_open_vehicle(rct_vehicle *vehicle)
w->ride.var_482 = -1;
}
w->page = WINDOW_PARK_PAGE_MAIN;
w->page = WINDOW_RIDE_PAGE_MAIN;
w->width = 316;
w->height = 180;
window_invalidate(w);
w->widgets = window_ride_page_widgets[w->page];
w->enabled_widgets = window_ride_page_enabled_widgets[w->page];
w->var_020 = RCT2_ADDRESS(0x0098DD68, uint32)[w->page];
w->hold_down_widgets = window_ride_page_hold_down_widgets[w->page];
w->event_handlers = window_ride_page_events[w->page];
w->pressed_widgets = 0;
RCT2_CALLPROC_X(0x006AEB9F, 0, 0, 0, 0, (int)w, 0, 0);
@ -1339,7 +1352,7 @@ static void window_ride_set_page(rct_window *w, int page)
// Set listen only to viewport
listen = 0;
if (page == WINDOW_PARK_PAGE_MAIN && w->page == WINDOW_PARK_PAGE_MAIN && w->viewport != NULL && !(w->viewport->flags & VIEWPORT_FLAG_SOUND_ON))
if (page == WINDOW_RIDE_PAGE_MAIN && w->page == WINDOW_RIDE_PAGE_MAIN && w->viewport != NULL && !(w->viewport->flags & VIEWPORT_FLAG_SOUND_ON))
listen++;
w->page = page;
@ -1351,7 +1364,7 @@ static void window_ride_set_page(rct_window *w, int page)
}
w->enabled_widgets = window_ride_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x0098DD68, uint32)[page];
w->hold_down_widgets = window_ride_page_hold_down_widgets[page];
w->event_handlers = window_ride_page_events[page];
w->pressed_widgets = 0;
w->widgets = window_ride_page_widgets[page];
@ -1371,7 +1384,7 @@ static void window_ride_set_page(rct_window *w, int page)
static void window_ride_set_pressed_tab(rct_window *w)
{
int i;
for (i = 0; i < WINDOW_PARK_PAGE_COUNT; i++)
for (i = 0; i < WINDOW_RIDE_PAGE_COUNT; i++)
w->pressed_widgets &= ~(1 << (WIDX_TAB_1 + i));
w->pressed_widgets |= 1LL << (WIDX_TAB_1 + w->page);
}
@ -1395,7 +1408,7 @@ static void window_ride_anchor_border_widgets(rct_window *w)
*/
static void window_ride_init_viewport(rct_window *w)
{
if (w->page != WINDOW_PARK_PAGE_MAIN) return;
if (w->page != WINDOW_RIDE_PAGE_MAIN) return;
rct_ride* ride = GET_RIDE(w->number);
int eax = w->viewport_focus_coordinates.var_480 - 1;

View File

@ -326,7 +326,7 @@ void window_staff_open(rct_peep* peep)
w->widgets = window_staff_overview_widgets;
w->enabled_widgets = window_staff_page_enabled_widgets[0];
w->var_020 = RCT2_GLOBAL(0x9929BC, uint32);
w->hold_down_widgets = 0;
w->event_handlers = window_staff_page_events[0];
w->pressed_widgets = 0;
window_staff_disable_widgets(w);
@ -413,7 +413,7 @@ void window_staff_set_page(rct_window* w, int page)
}
w->enabled_widgets = window_staff_page_enabled_widgets[page];
w->var_020 = RCT2_ADDRESS(0x9929BC, uint32)[page];
w->hold_down_widgets = 0;
w->event_handlers = window_staff_page_events[page];
w->pressed_widgets = 0;
w->widgets = window_staff_page_widgets[page];