From c91bdadb472b795df15fe0bc31c32faf2d666c20 Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Thu, 21 Nov 2019 17:49:34 -0300 Subject: [PATCH] Use ScreenCoordsXY on viewport interactions --- src/openrct2-ui/input/MouseInput.cpp | 8 ++-- .../interface/ViewportInteraction.cpp | 46 +++++++++---------- .../windows/TitleCommandEditor.cpp | 2 +- src/openrct2/interface/Viewport.h | 12 ++--- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index a5f1577d4b..150c3288f1 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -352,7 +352,7 @@ static void game_handle_input_mouse(ScreenCoordsXY screenCoords, int32_t state) if (_ticksSinceDragStart < 500) { // If the user pressed the right mouse button for less than 500 ticks, interpret as right click - viewport_interaction_right_click(screenCoords.x, screenCoords.y); + viewport_interaction_right_click(screenCoords); } } break; @@ -405,7 +405,7 @@ static void game_handle_input_mouse(ScreenCoordsXY screenCoords, int32_t state) } else if (!(_inputFlags & INPUT_FLAG_4)) { - viewport_interaction_left_click(screenCoords.x, screenCoords.y); + viewport_interaction_left_click(screenCoords); } } break; @@ -1108,7 +1108,7 @@ void process_mouse_over(ScreenCoordsXY screenCoords) case WWT_VIEWPORT: if (!(_inputFlags & INPUT_FLAG_TOOL_ACTIVE)) { - if (viewport_interaction_left_over(screenCoords.x, screenCoords.y)) + if (viewport_interaction_left_over(screenCoords)) { set_cursor(CURSOR_HAND_POINT); return; @@ -1177,7 +1177,7 @@ void process_mouse_over(ScreenCoordsXY screenCoords) } } - viewport_interaction_right_over(screenCoords.x, screenCoords.y); + viewport_interaction_right_over(screenCoords); set_cursor(cursorId); } diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index f6ba07e2d0..bd4d02ac52 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -45,13 +45,13 @@ static void viewport_interaction_remove_footpath_item(TileElement* tileElement, static void viewport_interaction_remove_park_wall(TileElement* tileElement, int32_t x, int32_t y); static void viewport_interaction_remove_large_scenery(TileElement* tileElement, int32_t x, int32_t y); static void viewport_interaction_remove_park_entrance(TileElement* tileElement, int32_t x, int32_t y); -static Peep* viewport_interaction_get_closest_peep(int32_t x, int32_t y, int32_t maxDistance); +static Peep* viewport_interaction_get_closest_peep(ScreenCoordsXY screenCoords, int32_t maxDistance); /** * * rct2: 0x006ED9D0 */ -int32_t viewport_interaction_get_item_left(int32_t x, int32_t y, viewport_interaction_info* info) +int32_t viewport_interaction_get_item_left(ScreenCoordsXY screenCoords, viewport_interaction_info* info) { TileElement* tileElement; rct_sprite* sprite; @@ -65,10 +65,10 @@ int32_t viewport_interaction_get_item_left(int32_t x, int32_t y, viewport_intera if ((gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) && gS6Info.editor_step != EDITOR_STEP_ROLLERCOASTER_DESIGNER) return info->type = VIEWPORT_INTERACTION_ITEM_NONE; - LocationXY16 mapCoord = {}; + CoordsXY mapCoord = {}; get_map_coordinates_from_pos( - x, y, VIEWPORT_INTERACTION_MASK_SPRITE & VIEWPORT_INTERACTION_MASK_RIDE & VIEWPORT_INTERACTION_MASK_PARK, &mapCoord.x, - &mapCoord.y, &info->type, &info->tileElement, nullptr); + screenCoords, VIEWPORT_INTERACTION_MASK_SPRITE & VIEWPORT_INTERACTION_MASK_RIDE & VIEWPORT_INTERACTION_MASK_PARK, + mapCoord, &info->type, &info->tileElement, nullptr); info->x = mapCoord.x; info->y = mapCoord.y; tileElement = info->tileElement; @@ -111,7 +111,7 @@ int32_t viewport_interaction_get_item_left(int32_t x, int32_t y, viewport_intera // If nothing is under cursor, find a close by peep if (info->type == VIEWPORT_INTERACTION_ITEM_NONE) { - info->peep = viewport_interaction_get_closest_peep(x, y, 32); + info->peep = viewport_interaction_get_closest_peep(screenCoords, 32); if (info->peep == nullptr) return VIEWPORT_INTERACTION_ITEM_NONE; @@ -124,11 +124,11 @@ int32_t viewport_interaction_get_item_left(int32_t x, int32_t y, viewport_intera return info->type; } -int32_t viewport_interaction_left_over(int32_t x, int32_t y) +int32_t viewport_interaction_left_over(ScreenCoordsXY screenCoords) { viewport_interaction_info info; - switch (viewport_interaction_get_item_left(x, y, &info)) + switch (viewport_interaction_get_item_left(screenCoords, &info)) { case VIEWPORT_INTERACTION_ITEM_SPRITE: case VIEWPORT_INTERACTION_ITEM_RIDE: @@ -139,11 +139,11 @@ int32_t viewport_interaction_left_over(int32_t x, int32_t y) } } -int32_t viewport_interaction_left_click(int32_t x, int32_t y) +int32_t viewport_interaction_left_click(ScreenCoordsXY screenCoords) { viewport_interaction_info info; - switch (viewport_interaction_get_item_left(x, y, &info)) + switch (viewport_interaction_get_item_left(screenCoords, &info)) { case VIEWPORT_INTERACTION_ITEM_SPRITE: switch (info.sprite->generic.sprite_identifier) @@ -200,7 +200,7 @@ int32_t viewport_interaction_left_click(int32_t x, int32_t y) * * rct2: 0x006EDE88 */ -int32_t viewport_interaction_get_item_right(int32_t x, int32_t y, viewport_interaction_info* info) +int32_t viewport_interaction_get_item_right(ScreenCoordsXY screenCoords, viewport_interaction_info* info) { TileElement* tileElement; rct_scenery_entry* sceneryEntry; @@ -215,9 +215,9 @@ int32_t viewport_interaction_get_item_right(int32_t x, int32_t y, viewport_inter if ((gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) && gS6Info.editor_step != EDITOR_STEP_ROLLERCOASTER_DESIGNER) return info->type = VIEWPORT_INTERACTION_ITEM_NONE; - LocationXY16 mapCoord = {}; + CoordsXY mapCoord = {}; get_map_coordinates_from_pos( - x, y, ~(VIEWPORT_INTERACTION_MASK_TERRAIN & VIEWPORT_INTERACTION_MASK_WATER), &mapCoord.x, &mapCoord.y, &info->type, + screenCoords, ~(VIEWPORT_INTERACTION_MASK_TERRAIN & VIEWPORT_INTERACTION_MASK_WATER), mapCoord, &info->type, &info->tileElement, nullptr); info->x = mapCoord.x; info->y = mapCoord.y; @@ -435,23 +435,23 @@ int32_t viewport_interaction_get_item_right(int32_t x, int32_t y, viewport_inter return info->type = VIEWPORT_INTERACTION_ITEM_NONE; } -int32_t viewport_interaction_right_over(int32_t x, int32_t y) +int32_t viewport_interaction_right_over(ScreenCoordsXY screenCoords) { viewport_interaction_info info; - return viewport_interaction_get_item_right(x, y, &info) != 0; + return viewport_interaction_get_item_right(screenCoords, &info) != 0; } /** * * rct2: 0x006E8A62 */ -int32_t viewport_interaction_right_click(int32_t x, int32_t y) +int32_t viewport_interaction_right_click(ScreenCoordsXY screenCoords) { CoordsXYE tileElement; viewport_interaction_info info; - switch (viewport_interaction_get_item_right(x, y, &info)) + switch (viewport_interaction_get_item_right(screenCoords, &info)) { case VIEWPORT_INTERACTION_ITEM_NONE: return 0; @@ -613,7 +613,7 @@ static void viewport_interaction_remove_large_scenery(TileElement* tileElement, } } -static Peep* viewport_interaction_get_closest_peep(int32_t x, int32_t y, int32_t maxDistance) +static Peep* viewport_interaction_get_closest_peep(ScreenCoordsXY screenCoords, int32_t maxDistance) { int32_t distance, closestDistance; uint16_t spriteIndex; @@ -621,7 +621,7 @@ static Peep* viewport_interaction_get_closest_peep(int32_t x, int32_t y, int32_t rct_viewport* viewport; Peep *peep, *closestPeep; - w = window_find_from_point(ScreenCoordsXY(x, y)); + w = window_find_from_point(screenCoords); if (w == nullptr) return nullptr; @@ -629,8 +629,8 @@ static Peep* viewport_interaction_get_closest_peep(int32_t x, int32_t y, int32_t if (viewport == nullptr || viewport->zoom >= 2) return nullptr; - x = ((x - viewport->x) << viewport->zoom) + viewport->view_x; - y = ((y - viewport->y) << viewport->zoom) + viewport->view_y; + screenCoords.x = ((screenCoords.x - viewport->x) << viewport->zoom) + viewport->view_x; + screenCoords.y = ((screenCoords.y - viewport->y) << viewport->zoom) + viewport->view_y; closestPeep = nullptr; closestDistance = 0xFFFF; @@ -639,8 +639,8 @@ static Peep* viewport_interaction_get_closest_peep(int32_t x, int32_t y, int32_t if (peep->sprite_left == LOCATION_NULL) continue; - distance = abs(((peep->sprite_left + peep->sprite_right) / 2) - x) - + abs(((peep->sprite_top + peep->sprite_bottom) / 2) - y); + distance = abs(((peep->sprite_left + peep->sprite_right) / 2) - screenCoords.x) + + abs(((peep->sprite_top + peep->sprite_bottom) / 2) - screenCoords.y); if (distance > maxDistance) continue; diff --git a/src/openrct2-ui/windows/TitleCommandEditor.cpp b/src/openrct2-ui/windows/TitleCommandEditor.cpp index b0d15aeab4..fecf61c0b5 100644 --- a/src/openrct2-ui/windows/TitleCommandEditor.cpp +++ b/src/openrct2-ui/windows/TitleCommandEditor.cpp @@ -612,7 +612,7 @@ static void window_title_command_editor_update(rct_window* w) static void window_title_command_editor_tool_down(rct_window* w, rct_widgetindex widgetIndex, ScreenCoordsXY screenCoords) { viewport_interaction_info info; - viewport_interaction_get_item_left(screenCoords.x, screenCoords.y, &info); + viewport_interaction_get_item_left(screenCoords, &info); if (info.type == VIEWPORT_INTERACTION_ITEM_SPRITE) { diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 62f85c2b6a..b5227df9d6 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -162,12 +162,12 @@ void get_map_coordinates_from_pos_window( rct_window* window, ScreenCoordsXY screenCoords, int32_t flags, CoordsXY& mapCoords, int32_t* interactionType, TileElement** tileElement, rct_viewport** viewport); -int32_t viewport_interaction_get_item_left(int32_t x, int32_t y, viewport_interaction_info* info); -int32_t viewport_interaction_left_over(int32_t x, int32_t y); -int32_t viewport_interaction_left_click(int32_t x, int32_t y); -int32_t viewport_interaction_get_item_right(int32_t x, int32_t y, viewport_interaction_info* info); -int32_t viewport_interaction_right_over(int32_t x, int32_t y); -int32_t viewport_interaction_right_click(int32_t x, int32_t y); +int32_t viewport_interaction_get_item_left(ScreenCoordsXY screenCoords, viewport_interaction_info* info); +int32_t viewport_interaction_left_over(ScreenCoordsXY screenCoords); +int32_t viewport_interaction_left_click(ScreenCoordsXY screenCoords); +int32_t viewport_interaction_get_item_right(ScreenCoordsXY screenCoords, viewport_interaction_info* info); +int32_t viewport_interaction_right_over(ScreenCoordsXY screenCoords); +int32_t viewport_interaction_right_click(ScreenCoordsXY screenCoords); CoordsXY sub_68A15E(ScreenCoordsXY screenCoords); void sub_68B2B7(paint_session* session, CoordsXY mapCoords);