convert handling shortcut keys to switch

This commit is contained in:
IntelOrca 2014-05-09 23:05:50 +01:00
parent 9d07c4a508
commit 3b8f0d685b
2 changed files with 168 additions and 195 deletions

View File

@ -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;
}
}
}
/**

View File

@ -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;