mirror of https://github.com/OpenRCT2/OpenRCT2.git
refactor window hold down widgets (var_020)
This commit is contained in:
parent
f6c09b44b6
commit
0db1c88f2b
44
src/input.c
44
src/input.c
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in New Issue