mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-24 00:03:11 +01:00
Merge pull request #1580 from runelaenen/anti-clockwise-2
Anti clockwise 2
This commit is contained in:
@@ -3788,3 +3788,5 @@ STR_5451 :Open cheats window
|
||||
STR_5452 :Toggle visibility of toolbars
|
||||
STR_5453 :Select another ride
|
||||
STR_5454 :Uncap FPS
|
||||
STR_5458 :Rotate clockwise
|
||||
STR_5459 :Rotate anti-clockwise
|
||||
|
||||
@@ -157,17 +157,8 @@ static void shortcut_zoom_view_in()
|
||||
|
||||
static void shortcut_rotate_view()
|
||||
{
|
||||
rct_window *window;
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) || RCT2_GLOBAL(0x0141F570, uint8) == 1) {
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TRACK_MANAGER)) {
|
||||
window = window_find_by_class(WC_TOP_TOOLBAR);
|
||||
if (window != NULL) {
|
||||
window_invalidate(window);
|
||||
window_event_mouse_up_call(window, 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
rct_window* w = window_get_main();
|
||||
window_rotate_camera(w, 1);
|
||||
}
|
||||
|
||||
static void shortcut_rotate_construction_object()
|
||||
|
||||
@@ -1353,8 +1353,11 @@ void sub_688956()
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0068881A
|
||||
* direction can be used to alter the camera rotation:
|
||||
* 1: clockwise
|
||||
* -1: anti-clockwise
|
||||
*/
|
||||
void window_rotate_camera(rct_window *w)
|
||||
void window_rotate_camera(rct_window *w, int direction)
|
||||
{
|
||||
rct_viewport *viewport = w->viewport;
|
||||
if (viewport == NULL)
|
||||
@@ -1375,11 +1378,12 @@ void window_rotate_camera(rct_window *w)
|
||||
y = (viewport->view_height >> 1) + viewport->view_y;
|
||||
|
||||
sub_689174(&x, &y, &z);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
z = map_element_height(x, y);
|
||||
}
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32) = (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32) + 1) % 4;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32) = (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32) + direction) % 4;
|
||||
|
||||
int new_x, new_y;
|
||||
center_2d_coordinates(x, y, z, &new_x, &new_y, viewport);
|
||||
|
||||
@@ -496,7 +496,7 @@ rct_window *window_get_main();
|
||||
|
||||
void window_scroll_to_viewport(rct_window *w);
|
||||
void window_scroll_to_location(rct_window *w, int x, int y, int z);
|
||||
void window_rotate_camera(rct_window *w);
|
||||
void window_rotate_camera(rct_window *w, int direction);
|
||||
void window_zoom_set(rct_window *w, int zoomLevel);
|
||||
void window_zoom_in(rct_window *w);
|
||||
void window_zoom_out(rct_window *w);
|
||||
|
||||
@@ -83,6 +83,9 @@ enum {
|
||||
STR_PAUSE_GAME_TIP = 833,
|
||||
STR_DISC_AND_GAME_OPTIONS_TIP = 834,
|
||||
|
||||
STR_ROTATE_CLOCKWISE = 5458,
|
||||
STR_ROTATE_ANTI_CLOCKWISE = 5459,
|
||||
|
||||
STR_ABOUT = 847,
|
||||
STR_ROLLERCOASTER_TYCOON_2 = 848,
|
||||
STR_VERSION_X = 849,
|
||||
|
||||
@@ -300,7 +300,7 @@ static void title_do_next_script_opcode()
|
||||
w = window_get_main();
|
||||
if (w != NULL)
|
||||
for (i = 0; i < script_operand; i++)
|
||||
window_rotate_camera(w);
|
||||
window_rotate_camera(w, 1);
|
||||
break;
|
||||
case TITLE_SCRIPT_ZOOM:
|
||||
script_operand = (*_currentScript++);
|
||||
|
||||
@@ -218,6 +218,8 @@ void top_toolbar_init_view_menu(rct_window *window, rct_widget *widget);
|
||||
void top_toolbar_view_menu_dropdown(short dropdownIndex);
|
||||
void top_toolbar_init_fastforward_menu(rct_window *window, rct_widget *widget);
|
||||
void top_toolbar_fastforward_menu_dropdown(short dropdownIndex);
|
||||
void top_toolbar_init_rotate_menu(rct_window *window, rct_widget *widget);
|
||||
void top_toolbar_rotate_menu_dropdown(short dropdownIndex);
|
||||
void top_toolbar_init_debug_menu(rct_window *window, rct_widget *widget);
|
||||
void top_toolbar_debug_menu_dropdown(short dropdownIndex);
|
||||
|
||||
@@ -274,10 +276,6 @@ static void window_top_toolbar_mouseup()
|
||||
if ((mainWindow = window_get_main()) != NULL)
|
||||
window_zoom_in(mainWindow);
|
||||
break;
|
||||
case WIDX_ROTATE:
|
||||
if ((mainWindow = window_get_main()) != NULL)
|
||||
window_rotate_camera(mainWindow);
|
||||
break;
|
||||
case WIDX_CLEAR_SCENERY:
|
||||
toggle_clear_scenery_window(w, WIDX_CLEAR_SCENERY);
|
||||
break;
|
||||
@@ -422,6 +420,9 @@ static void window_top_toolbar_mousedown(int widgetIndex, rct_window*w, rct_widg
|
||||
case WIDX_FASTFORWARD:
|
||||
top_toolbar_init_fastforward_menu(w, widget);
|
||||
break;
|
||||
case WIDX_ROTATE:
|
||||
top_toolbar_init_rotate_menu(w, widget);
|
||||
break;
|
||||
case WIDX_DEBUG:
|
||||
top_toolbar_init_debug_menu(w, widget);
|
||||
break;
|
||||
@@ -506,6 +507,9 @@ static void window_top_toolbar_dropdown()
|
||||
case WIDX_FASTFORWARD:
|
||||
top_toolbar_fastforward_menu_dropdown(dropdownIndex);
|
||||
break;
|
||||
case WIDX_ROTATE:
|
||||
top_toolbar_rotate_menu_dropdown(dropdownIndex);
|
||||
break;
|
||||
case WIDX_DEBUG:
|
||||
top_toolbar_debug_menu_dropdown(dropdownIndex);
|
||||
break;
|
||||
@@ -2792,7 +2796,7 @@ void top_toolbar_init_fastforward_menu(rct_window* w, rct_widget* widget) {
|
||||
gDropdownItemsArgs[1] = 5143;
|
||||
gDropdownItemsArgs[2] = 5144;
|
||||
gDropdownItemsArgs[3] = 5145;
|
||||
|
||||
|
||||
|
||||
window_dropdown_show_text(
|
||||
w->x + widget->left,
|
||||
@@ -2828,6 +2832,37 @@ void top_toolbar_fastforward_menu_dropdown(short dropdownIndex) {
|
||||
}
|
||||
}
|
||||
|
||||
void top_toolbar_init_rotate_menu(rct_window* w, rct_widget* widget) {
|
||||
gDropdownItemsFormat[0] = STR_ROTATE_CLOCKWISE;
|
||||
gDropdownItemsFormat[1] = STR_ROTATE_ANTI_CLOCKWISE;
|
||||
|
||||
window_dropdown_show_text(
|
||||
w->x + widget->left,
|
||||
w->y + widget->top,
|
||||
widget->bottom - widget->top + 1,
|
||||
w->colours[1] | 0x80,
|
||||
0,
|
||||
2
|
||||
);
|
||||
|
||||
RCT2_GLOBAL(0x9DEBA2, uint16) = 0;
|
||||
}
|
||||
|
||||
void top_toolbar_rotate_menu_dropdown(short dropdownIndex) {
|
||||
if (dropdownIndex == -1) dropdownIndex = RCT2_GLOBAL(0x9DEBA2, uint16);
|
||||
rct_window* w = window_get_main();
|
||||
if (w) {
|
||||
if (dropdownIndex == 0) {
|
||||
window_rotate_camera(w, 1);
|
||||
window_invalidate(w);
|
||||
}
|
||||
else if (dropdownIndex == 1){
|
||||
window_rotate_camera(w, -1);
|
||||
window_invalidate(w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void top_toolbar_init_debug_menu(rct_window* w, rct_widget* widget) {
|
||||
gDropdownItemsFormat[0] = STR_DEBUG_DROPDOWN_CONSOLE;
|
||||
gDropdownItemsFormat[1] = STR_DEBUG_DROPDOWN_TILE_INSPECTOR;
|
||||
|
||||
Reference in New Issue
Block a user