diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 7d2341055d..af10cc361f 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -2500,7 +2500,7 @@ STR_2495 :Cancel construction mode STR_2496 :Pause game STR_2497 :Zoom view out STR_2498 :Zoom view in -STR_2499 :Rotate view +STR_2499 :Rotate view clockwise STR_2500 :Rotate construction object STR_2501 :Underground view toggle STR_2502 :Remove base land toggle @@ -3790,3 +3790,4 @@ STR_5453 :Select another ride STR_5454 :Uncap FPS STR_5458 :Rotate clockwise STR_5459 :Rotate anti-clockwise +STR_5460 :Rotate view anti-clockwise diff --git a/src/config.c b/src/config.c index de68b5ef6a..8c42c9dfe7 100644 --- a/src/config.c +++ b/src/config.c @@ -914,18 +914,23 @@ void config_dat_save() #pragma region Shortcuts +#define SHIFT 0x100 +#define CTRL 0x200 +#define ALT 0x400 + // Current keyboard shortcuts uint16 gShortcutKeys[SHORTCUT_COUNT]; // Default keyboard shortcuts static const uint16 _defaultShortcutKeys[SHORTCUT_COUNT] = { SDL_SCANCODE_BACKSPACE, // SHORTCUT_CLOSE_TOP_MOST_WINDOW - 0x0100 | SDL_SCANCODE_BACKSPACE, // SHORTCUT_CLOSE_ALL_FLOATING_WINDOWS + SHIFT | SDL_SCANCODE_BACKSPACE, // SHORTCUT_CLOSE_ALL_FLOATING_WINDOWS SDL_SCANCODE_ESCAPE, // SHORTCUT_CANCEL_CONSTRUCTION_MODE SDL_SCANCODE_PAUSE, // SHORTCUT_PAUSE_GAME SDL_SCANCODE_PAGEUP, // SHORTCUT_ZOOM_VIEW_OUT SDL_SCANCODE_PAGEDOWN, // SHORTCUT_ZOOM_VIEW_IN - SDL_SCANCODE_RETURN, // SHORTCUT_ROTATE_VIEW + SDL_SCANCODE_RETURN, // SHORTCUT_ROTATE_VIEW_CLOCKWISE + SHIFT | SDL_SCANCODE_RETURN, // SHORTCUT_ROTATE_VIEW_ANTICLOCKWISE SDL_SCANCODE_Z, // SHORTCUT_ROTATE_CONSTRUCTION_OBJECT SDL_SCANCODE_1, // SHORTCUT_UNDERGROUND_VIEW_TOGGLE SDL_SCANCODE_H, // SHORTCUT_REMOVE_BASE_LAND_TOGGLE @@ -950,15 +955,17 @@ static const uint16 _defaultShortcutKeys[SHORTCUT_COUNT] = { SDL_SCANCODE_S, // SHORTCUT_SHOW_STAFF_LIST SDL_SCANCODE_M, // SHORTCUT_SHOW_RECENT_MESSAGES SDL_SCANCODE_TAB, // SHORTCUT_SHOW_MAP - 0x0200 | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT + CTRL | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT // New SDL_SCANCODE_MINUS, // SHORTCUT_REDUCE_GAME_SPEED, SDL_SCANCODE_EQUALS, // SHORTCUT_INCREASE_GAME_SPEED, - 0x0200 | 0x0400 | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, + CTRL | ALT | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, SDL_SCANCODE_T, // SHORTCUT_REMOVE_TOP_BOTTOM_TOOLBAR_TOGGLE, }; +#define SHORTCUT_FILE_VERSION 1 + /** * * rct2: 0x006E3604 @@ -978,13 +985,19 @@ bool config_shortcut_keys_load() { char path[MAX_PATH]; FILE *file; - int result; + bool result; + uint16 version; config_shortcut_keys_get_path(path); file = fopen(path, "rb"); if (file != NULL) { - result = fread(gShortcutKeys, sizeof(gShortcutKeys), 1, file) == 1; + result = fread(&version, sizeof(version), 1, file) == 1; + if (result && version == SHORTCUT_FILE_VERSION) { + result = fread(gShortcutKeys, sizeof(gShortcutKeys), 1, file) == 1; + } else { + result = false; + } fclose(file); } else { result = false; @@ -995,15 +1008,20 @@ bool config_shortcut_keys_load() bool config_shortcut_keys_save() { + const uint16 version = SHORTCUT_FILE_VERSION; + char path[MAX_PATH]; FILE *file; - int result; + bool result; config_shortcut_keys_get_path(path); file = fopen(path, "wb"); if (file != NULL) { - result = fwrite(gShortcutKeys, sizeof(gShortcutKeys), 1, file) == 1; + result = fwrite(&version, sizeof(version), 1, file) == 1; + if (result) { + result = fwrite(gShortcutKeys, sizeof(gShortcutKeys), 1, file) == 1; + } fclose(file); } else { result = false; diff --git a/src/config.h b/src/config.h index 160630f2a3..4cb4a618f0 100644 --- a/src/config.h +++ b/src/config.h @@ -39,7 +39,8 @@ enum { SHORTCUT_PAUSE_GAME, SHORTCUT_ZOOM_VIEW_OUT, SHORTCUT_ZOOM_VIEW_IN, - SHORTCUT_ROTATE_VIEW, + SHORTCUT_ROTATE_VIEW_CLOCKWISE, + SHORTCUT_ROTATE_VIEW_ANTICLOCKWISE, SHORTCUT_ROTATE_CONSTRUCTION_OBJECT, SHORTCUT_UNDERGROUND_VIEW_TOGGLE, SHORTCUT_REMOVE_BASE_LAND_TOGGLE, @@ -71,6 +72,7 @@ enum { SHORTCUT_INCREASE_GAME_SPEED, SHORTCUT_OPEN_CHEAT_WINDOW, SHORTCUT_REMOVE_TOP_BOTTOM_TOOLBAR_TOGGLE, + SHORTCUT_COUNT }; diff --git a/src/interface/keyboard_shortcut.c b/src/interface/keyboard_shortcut.c index 3c2e5d4ad3..3241fff1ad 100644 --- a/src/interface/keyboard_shortcut.c +++ b/src/interface/keyboard_shortcut.c @@ -155,12 +155,18 @@ static void shortcut_zoom_view_in() } } -static void shortcut_rotate_view() +static void shortcut_rotate_view_clockwise() { rct_window* w = window_get_main(); window_rotate_camera(w, 1); } +static void shortcut_rotate_view_anticlockwise() +{ + rct_window* w = window_get_main(); + window_rotate_camera(w, -1); +} + static void shortcut_rotate_construction_object() { rct_window *w; @@ -468,7 +474,8 @@ static const shortcut_action shortcut_table[SHORTCUT_COUNT] = { shortcut_pause_game, shortcut_zoom_view_out, shortcut_zoom_view_in, - shortcut_rotate_view, + shortcut_rotate_view_clockwise, + shortcut_rotate_view_anticlockwise, shortcut_rotate_construction_object, shortcut_underground_view_toggle, shortcut_remove_base_land_toggle, diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 7424d11e93..1e475a29c1 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -1159,7 +1159,7 @@ enum { STR_SHORTCUT_PAUSE_GAME = 2496, STR_SHORTCUT_ZOOM_VIEW_OUT = 2497, STR_SHORTCUT_ZOOM_VIEW_IN = 2498, - STR_SHORTCUT_ROTATE_VIEW = 2499, + STR_SHORTCUT_ROTATE_VIEW_CLOCKWISE = 2499, STR_SHORTCUT_ROTATE_CONSTRUCTION_OBJECT = 2500, STR_SHORTCUT_UNDERGROUND_VIEW_TOGGLE = 2501, STR_SHORTCUT_REMOVE_BASE_LAND_TOGGLE = 2502, @@ -1774,6 +1774,8 @@ enum { STR_SELECT_OTHER_RIDE = 5453, + STR_SHORTCUT_ROTATE_VIEW_ANTICLOCKWISE = 5460, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 }; diff --git a/src/windows/shortcut_keys.c b/src/windows/shortcut_keys.c index 1accbd0c51..7c36ea0166 100644 --- a/src/windows/shortcut_keys.c +++ b/src/windows/shortcut_keys.c @@ -95,7 +95,8 @@ const rct_string_id ShortcutStringIds[] = { STR_SHORTCUT_PAUSE_GAME, STR_SHORTCUT_ZOOM_VIEW_OUT, STR_SHORTCUT_ZOOM_VIEW_IN, - STR_SHORTCUT_ROTATE_VIEW, + STR_SHORTCUT_ROTATE_VIEW_CLOCKWISE, + STR_SHORTCUT_ROTATE_VIEW_ANTICLOCKWISE, STR_SHORTCUT_ROTATE_CONSTRUCTION_OBJECT, STR_SHORTCUT_UNDERGROUND_VIEW_TOGGLE, STR_SHORTCUT_REMOVE_BASE_LAND_TOGGLE,