1
0
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:
Ted John
2015-07-09 13:33:20 +01:00
7 changed files with 56 additions and 21 deletions

View File

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

View File

@@ -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()

View File

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

View File

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

View File

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

View File

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

View File

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