From 3b8f0d685bc8c5a78ef64f795ce8b475e7288d2a Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Fri, 9 May 2014 23:05:50 +0100 Subject: [PATCH] convert handling shortcut keys to switch --- src/game.c | 361 +++++++++++++++++++--------------------- src/window_guest_list.c | 2 +- 2 files changed, 168 insertions(+), 195 deletions(-) diff --git a/src/game.c b/src/game.c index 14b0627211..1a775dcf4c 100644 --- a/src/game.c +++ b/src/game.c @@ -866,39 +866,28 @@ int get_next_key() return 0; } -/** - * - * rct2: 0x006E3E68 - */ -void handle_shortcut(int key) { +void handle_shortcut_command(int shortcutIndex) +{ + rct_window *window; - rct_window* window; - - if (key == gShortcutKeys[0]) { - // Close top most window + switch (shortcutIndex) { + case SHORTCUT_CLOSE_TOP_MOST_WINDOW: window_close_top(); - - } else if (key == gShortcutKeys[1]) { - // Close all windows - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2)) { + break; + case SHORTCUT_CLOSE_ALL_FLOATING_WINDOWS: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2)) window_close_all(); - return; - } - if (RCT2_ADDRESS(0x0141F570, uint8) == 1) { + else if (RCT2_ADDRESS(0x0141F570, uint8) == 1) window_close_top(); - } - } else if (key == gShortcutKeys[2]) { - // Cancel construction mode + break; + case SHORTCUT_CANCEL_CONSTRUCTION_MODE: window = window_find_by_id(WC_ERROR, 0); - if (window != NULL) { + if (window != NULL) window_close(window); - return; - } - if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3)) { + else if (RCT2_GLOBAL(0x009DE518, uint32) & (1 << 3)) tool_cancel(); - } - } else if (key == gShortcutKeys[3]) { - // Pause + break; + case SHORTCUT_PAUSE_GAME: if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 10)) { window = window_find_by_id(WC_TOP_TOOLBAR, 0); if (window != NULL) { @@ -906,228 +895,212 @@ void handle_shortcut(int key) { window_event_helper(window, 0, WE_MOUSE_UP); } } - } else if (key == gShortcutKeys[4]) { - // Zoom out - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; + break; + case SHORTCUT_ZOOM_VIEW_OUT: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 8)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 2, WE_MOUSE_UP); + } } } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 8)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 2, WE_MOUSE_UP); + break; + case SHORTCUT_ZOOM_VIEW_IN: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 8)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 3, WE_MOUSE_UP); + } } } - } else if (key == gShortcutKeys[5]) { - // Zoom in - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; + break; + case SHORTCUT_ROTATE_VIEW: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 8)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 4, WE_MOUSE_UP); + } } } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 8)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 3, WE_MOUSE_UP); - } - } - } else if (key == gShortcutKeys[6]) { - // Rotate view - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; - } - } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 8)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 4, WE_MOUSE_UP); - } - } - } else if (key == gShortcutKeys[7]) { - // Rotate object + break; + case SHORTCUT_ROTATE_CONSTRUCTION_OBJECT: RCT2_CALLPROC_EBPSAFE(0x006E4182); - } else if (key == gShortcutKeys[8]) { - // Underground view toggle + break; + case SHORTCUT_UNDERGROUND_VIEW_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 0, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[9]) { - // Remove base land toggle + break; + case SHORTCUT_REMOVE_BASE_LAND_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 1, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[10]) { - // Remove vertical land toggle + break; + case SHORTCUT_REMOVE_VERTICAL_LAND_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 2, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[11]) { - // See through rides toggle + break; + case SHORTCUT_SEE_THROUGH_RIDES_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 4, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[12]) { - // See through scenery toggle + break; + case SHORTCUT_SEE_THROUGH_SCENERY_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 5, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[13]) { - // Invisible supports toggle + break; + case SHORTCUT_INVISIBLE_SUPPORTS_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 6, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[14]) { - // Invisible people toggle + break; + case SHORTCUT_INVISIBLE_PEOPLE_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 7, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[15]) { - // Height marks on land toggle + break; + case SHORTCUT_HEIGHT_MARKS_ON_LAND_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 9, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[16]) { - // Height marks on ride tracks toggle + break; + case SHORTCUT_HEIGHT_MARKS_ON_RIDE_TRACKS_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 10, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[17]) { - // Height marks on paths toggle + break; + case SHORTCUT_HEIGHT_MARKS_ON_PATHS_TOGGLE: RCT2_CALLPROC_X(0x0066CF8A, 11, 0, 0, 0, 0, 0, 0); - } else if (key == gShortcutKeys[18]) { - // Adjust land - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; + break; + case SHORTCUT_ADJUST_LAND: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 7, WE_MOUSE_UP); + } } } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 7, WE_MOUSE_UP); + break; + case SHORTCUT_ADJUST_WATER: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 8, WE_MOUSE_UP); + } } } - } else if (key == gShortcutKeys[19]) { - // Adjust water - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; + break; + case SHORTCUT_BUILD_SCENERY: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 9, WE_MOUSE_UP); + } } } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 8, WE_MOUSE_UP); + break; + case SHORTCUT_BUILD_PATHS: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 10, WE_MOUSE_UP); + } } } - } else if (key == gShortcutKeys[20]) { - // Build scenery - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; + break; + case SHORTCUT_BUILD_NEW_RIDE: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 11, WE_MOUSE_UP); + } } } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 9, WE_MOUSE_UP); - } - } - } else if (key == gShortcutKeys[21]) { - // Build paths - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; - } - } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 10, WE_MOUSE_UP); - } - } - } else if (key == gShortcutKeys[22]) { - // Build new ride - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; - } - } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 11, WE_MOUSE_UP); - } - } - } else if (key == gShortcutKeys[23]) { - // Show financial information - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & 0x800)) { - RCT2_CALLPROC_EBPSAFE(0x0069DDF1); - } - } - } else if (key == gShortcutKeys[24]) { - // Show research information - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { - // Open new ride window - RCT2_CALLPROC_EBPSAFE(0x006B3CFF); - window = window_find_by_id(WC_CONSTRUCT_RIDE, 0); - if (window != NULL) { + break; + case SHORTCUT_SHOW_FINANCIAL_INFORMATION: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) + if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & 0x800)) + RCT2_CALLPROC_EBPSAFE(0x0069DDF1); + break; + case SHORTCUT_SHOW_RESEARCH_INFORMATION: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { + // Open new ride window + RCT2_CALLPROC_EBPSAFE(0x006B3CFF); + window = window_find_by_id(WC_CONSTRUCT_RIDE, 0); + if (window != NULL) window_event_helper(window, 10, WE_MOUSE_DOWN); - } } - } else if (key == gShortcutKeys[25]) { - // Show rides list - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); + break; + case SHORTCUT_SHOW_RIDES_LIST: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); if (window != NULL) { window_invalidate(window); window_event_helper(window, 12, WE_MOUSE_UP); } } - } else if (key == gShortcutKeys[26]) { - // Show park information - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); + break; + case SHORTCUT_SHOW_PARK_INFORMATION: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); if (window != NULL) { window_invalidate(window); window_event_helper(window, 13, WE_MOUSE_UP); } } - } else if (key == gShortcutKeys[27]) { - // Show guest list - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); + break; + case SHORTCUT_SHOW_GUEST_LIST: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); if (window != NULL) { window_invalidate(window); window_event_helper(window, 15, WE_MOUSE_UP); } } - } else if (key == gShortcutKeys[28]) { - // Show staff information - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { + break; + case SHORTCUT_SHOW_STAFF_LIST: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { window = window_find_by_id(WC_TOP_TOOLBAR, 0); if (window != NULL) { window_invalidate(window); window_event_helper(window, 14, WE_MOUSE_UP); } } - } else if (key == gShortcutKeys[29]) { - // Show recent messages - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) { - window_news_open(); - } - } else if (key == gShortcutKeys[30]) { - // Show map - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) { - if (RCT2_ADDRESS(0x0141F570, uint8) != 1) { - return; + break; + case SHORTCUT_SHOW_RECENT_MESSAGES: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0E)) + window_news_open(); + break; + case SHORTCUT_SHOW_MAP: + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2) || RCT2_ADDRESS(0x0141F570, uint8) == 1) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { + window = window_find_by_id(WC_TOP_TOOLBAR, 0); + if (window != NULL) { + window_invalidate(window); + window_event_helper(window, 6, WE_MOUSE_UP); + } } } - if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 0x0C)) { - window = window_find_by_id(WC_TOP_TOOLBAR, 0); - if (window != NULL) { - window_invalidate(window); - window_event_helper(window, 6, WE_MOUSE_UP); - } - } - } else if (key == gShortcutKeys[31]) { - // Screenshot - RCT2_CALLPROC_EBPSAFE(0x006E4034); + break; + case SHORTCUT_SCREENSHOT: + RCT2_CALLPROC_EBPSAFE(0x006E4034); // set screenshot countdown to 2 + break; } +} +/** + * + * rct2: 0x006E3E68 + */ +void handle_shortcut(int key) +{ + int i; + for (i = 0; i < SHORTCUT_COUNT; i++) { + if (key == gShortcutKeys[i]) { + handle_shortcut_command(i); + break; + } + } } /** diff --git a/src/window_guest_list.c b/src/window_guest_list.c index a3f2de1480..0dbd247bb3 100644 --- a/src/window_guest_list.c +++ b/src/window_guest_list.c @@ -161,7 +161,7 @@ void window_guest_list_open() window_init_scroll_widgets(window); _window_guest_list_highlighted_index = -1; window->var_490 = 0; - _window_guest_list_selected_tab = 1; + _window_guest_list_selected_tab = PAGE_INDIVIDUAL; _window_guest_list_selected_filter = -1; _window_guest_list_selected_page = 0; _window_guest_list_num_pages = 1;