From 91c4735917bebbe607246a1d9feafd81039ed560 Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Sun, 1 Mar 2020 00:47:35 -0300 Subject: [PATCH] Revert to copy instead of const-ref for functions that edit content --- .../interface/ViewportInteraction.cpp | 13 +++++---- src/openrct2-ui/windows/Map.cpp | 11 ++++---- src/openrct2-ui/windows/RideConstruction.cpp | 15 +++++------ src/openrct2-ui/windows/Tooltip.cpp | 16 +++++------ src/openrct2-ui/windows/Window.h | 2 +- src/openrct2/interface/Viewport.cpp | 27 +++++++++---------- src/openrct2/interface/Viewport.h | 2 +- src/openrct2/interface/Window.cpp | 15 +++++------ src/openrct2/interface/Window.h | 2 +- 9 files changed, 48 insertions(+), 55 deletions(-) diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index e58fc76a3d..51b42ed37e 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -45,7 +45,7 @@ static void viewport_interaction_remove_footpath_item(TileElement* tileElement, static void viewport_interaction_remove_park_wall(TileElement* tileElement, CoordsXY mapCoords); static void viewport_interaction_remove_large_scenery(TileElement* tileElement, CoordsXY mapCoords); static void viewport_interaction_remove_park_entrance(TileElement* tileElement, CoordsXY mapCoords); -static Peep* viewport_interaction_get_closest_peep(const ScreenCoordsXY& screenCoords, int32_t maxDistance); +static Peep* viewport_interaction_get_closest_peep(ScreenCoordsXY screenCoords, int32_t maxDistance); /** * @@ -611,7 +611,7 @@ static void viewport_interaction_remove_large_scenery(TileElement* tileElement, } } -static Peep* viewport_interaction_get_closest_peep(const ScreenCoordsXY& screenCoords, int32_t maxDistance) +static Peep* viewport_interaction_get_closest_peep(ScreenCoordsXY screenCoords, int32_t maxDistance) { int32_t distance, closestDistance; uint16_t spriteIndex; @@ -627,9 +627,8 @@ static Peep* viewport_interaction_get_closest_peep(const ScreenCoordsXY& screenC if (viewport == nullptr || viewport->zoom >= 2) return nullptr; - auto adjustedScreenCoords = screenCoords; - adjustedScreenCoords.x = ((screenCoords.x - viewport->x) << viewport->zoom) + viewport->view_x; - adjustedScreenCoords.y = ((screenCoords.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; @@ -638,8 +637,8 @@ static Peep* viewport_interaction_get_closest_peep(const ScreenCoordsXY& screenC if (peep->sprite_left == LOCATION_NULL) continue; - distance = abs(((peep->sprite_left + peep->sprite_right) / 2) - adjustedScreenCoords.x) - + abs(((peep->sprite_top + peep->sprite_bottom) / 2) - adjustedScreenCoords.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/Map.cpp b/src/openrct2-ui/windows/Map.cpp index c8f9aefa08..9b5269903f 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -198,7 +198,7 @@ static void map_window_increase_map_size(); static void map_window_decrease_map_size(); static void map_window_set_pixels(rct_window* w); -static CoordsXY map_window_screen_to_map(const ScreenCoordsXY& screenCoords); +static CoordsXY map_window_screen_to_map(ScreenCoordsXY screenCoords); /** * @@ -1688,12 +1688,11 @@ static void map_window_set_pixels(rct_window* w) _currentLine = 0; } -static CoordsXY map_window_screen_to_map(const ScreenCoordsXY& screenCoords) +static CoordsXY map_window_screen_to_map(ScreenCoordsXY screenCoords) { - auto newScreenCoords = screenCoords; - newScreenCoords.x = ((screenCoords.x + 8) - MAXIMUM_MAP_SIZE_TECHNICAL) / 2; - newScreenCoords.y = ((screenCoords.y + 8)) / 2; - auto location = TileCoordsXY(newScreenCoords.y - newScreenCoords.x, newScreenCoords.x + newScreenCoords.y).ToCoordsXY(); + screenCoords.x = ((screenCoords.x + 8) - MAXIMUM_MAP_SIZE_TECHNICAL) / 2; + screenCoords.y = ((screenCoords.y + 8)) / 2; + auto location = TileCoordsXY(screenCoords.y - screenCoords.x, screenCoords.x + screenCoords.y).ToCoordsXY(); switch (get_current_rotation()) { diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index f36b358593..305ace5a43 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2108,10 +2108,9 @@ static void window_ride_construction_update(rct_window* w) * * rct2: 0x006CC538 */ -static std::optional ride_get_place_position_from_screen_position(const ScreenCoordsXY& screenCoords) +static std::optional ride_get_place_position_from_screen_position(ScreenCoordsXY screenCoords) { CoordsXY mapCoords; - auto dynamicScreenCoords = screenCoords; if (!_trackPlaceCtrlState) { @@ -2120,7 +2119,7 @@ static std::optional ride_get_place_position_from_screen_position(cons TileElement* tileElement; rct_viewport* viewport = nullptr; int32_t interactionType; - get_map_coordinates_from_pos(dynamicScreenCoords, 0xFCCA, mapCoords, &interactionType, &tileElement, &viewport); + get_map_coordinates_from_pos(screenCoords, 0xFCCA, mapCoords, &interactionType, &tileElement, &viewport); if (interactionType != 0) { _trackPlaceCtrlZ = tileElement->GetBaseZ(); @@ -2141,7 +2140,7 @@ static std::optional ride_get_place_position_from_screen_position(cons if (gInputPlaceObjectModifier & PLACE_OBJECT_MODIFIER_SHIFT_Z) { _trackPlaceShiftState = true; - _trackPlaceShiftStart = dynamicScreenCoords; + _trackPlaceShiftStart = screenCoords; _trackPlaceShiftZ = 0; } } @@ -2152,7 +2151,7 @@ static std::optional ride_get_place_position_from_screen_position(cons constexpr uint16_t maxHeight = (std::numeric_limits::max() - 32) << MAX_ZOOM_LEVEL; - _trackPlaceShiftZ = _trackPlaceShiftStart.y - dynamicScreenCoords.y + 4; + _trackPlaceShiftZ = _trackPlaceShiftStart.y - screenCoords.y + 4; // Scale delta by zoom to match mouse position. auto* mainWnd = window_get_main(); if (mainWnd && mainWnd->viewport) @@ -2164,7 +2163,7 @@ static std::optional ride_get_place_position_from_screen_position(cons // Clamp to maximum possible value of base_height can offer. _trackPlaceShiftZ = std::min(_trackPlaceShiftZ, maxHeight); - dynamicScreenCoords = _trackPlaceShiftStart; + screenCoords = _trackPlaceShiftStart; } else { @@ -2174,7 +2173,7 @@ static std::optional ride_get_place_position_from_screen_position(cons if (!_trackPlaceCtrlState) { - mapCoords = sub_68A15E(dynamicScreenCoords); + mapCoords = sub_68A15E(screenCoords); if (mapCoords.isNull()) return std::nullopt; @@ -2193,7 +2192,7 @@ static std::optional ride_get_place_position_from_screen_position(cons else { auto mapZ = _trackPlaceCtrlZ; - auto mapXYCoords = screen_get_map_xy_with_z(dynamicScreenCoords, mapZ); + auto mapXYCoords = screen_get_map_xy_with_z(screenCoords, mapZ); if (mapXYCoords) { mapCoords = *mapXYCoords; diff --git a/src/openrct2-ui/windows/Tooltip.cpp b/src/openrct2-ui/windows/Tooltip.cpp index 1f12d8af9c..d04dd52027 100644 --- a/src/openrct2-ui/windows/Tooltip.cpp +++ b/src/openrct2-ui/windows/Tooltip.cpp @@ -73,7 +73,7 @@ void window_tooltip_reset(const ScreenCoordsXY& screenCoords) input_set_flag(INPUT_FLAG_4, false); } -void window_tooltip_show(rct_string_id id, const ScreenCoordsXY& screenCoords) +void window_tooltip_show(rct_string_id id, ScreenCoordsXY screenCoords) { rct_window* w; int32_t width, height; @@ -107,22 +107,20 @@ void window_tooltip_show(rct_string_id id, const ScreenCoordsXY& screenCoords) int32_t screenWidth = context_get_width(); int32_t screenHeight = context_get_height(); - auto dynamicScreenCoords = screenCoords; - dynamicScreenCoords.x = std::clamp(dynamicScreenCoords.x - (width / 2), 0, screenWidth - width); + screenCoords.x = std::clamp(screenCoords.x - (width / 2), 0, screenWidth - width); // TODO The cursor size will be relative to the window DPI. // The amount to offset the y should be adjusted. int32_t max_y = screenHeight - height; - dynamicScreenCoords.y += 26; // Normally, we'd display the tooltip 26 lower - if (dynamicScreenCoords.y > max_y) + screenCoords.y += 26; // Normally, we'd display the tooltip 26 lower + if (screenCoords.y > max_y) // If y is too large, the tooltip could be forced below the cursor if we'd just clamped y, // so we'll subtract a bit more - dynamicScreenCoords.y -= height + 40; - dynamicScreenCoords.y = std::clamp(dynamicScreenCoords.y, 22, max_y); + screenCoords.y -= height + 40; + screenCoords.y = std::clamp(screenCoords.y, 22, max_y); - w = window_create( - dynamicScreenCoords, width, height, &window_tooltip_events, WC_TOOLTIP, WF_TRANSPARENT | WF_STICK_TO_FRONT); + w = window_create(screenCoords, width, height, &window_tooltip_events, WC_TOOLTIP, WF_TRANSPARENT | WF_STICK_TO_FRONT); w->widgets = window_tooltip_widgets; reset_tooltip_not_shown(); diff --git a/src/openrct2-ui/windows/Window.h b/src/openrct2-ui/windows/Window.h index 17417617c9..317273bf88 100644 --- a/src/openrct2-ui/windows/Window.h +++ b/src/openrct2-ui/windows/Window.h @@ -181,7 +181,7 @@ void window_tile_inspector_clear_clipboard(); rct_window* window_editor_object_selection_open(); void window_tooltip_reset(const ScreenCoordsXY& screenCoords); -void window_tooltip_show(rct_string_id id, const ScreenCoordsXY& screenCoords); +void window_tooltip_show(rct_string_id id, ScreenCoordsXY screenCoords); void window_tooltip_open(rct_window* widgetWindow, rct_widgetindex widgetIndex, const ScreenCoordsXY& screenCoords); void window_tooltip_close(); diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 6612d96cb4..739e1c1285 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1647,28 +1647,27 @@ void get_map_coordinates_from_pos( } void get_map_coordinates_from_pos_window( - rct_window* window, const ScreenCoordsXY& screenCoords, int32_t flags, CoordsXY& mapCoords, int32_t* interactionType, + rct_window* window, ScreenCoordsXY screenCoords, int32_t flags, CoordsXY& mapCoords, int32_t* interactionType, TileElement** tileElement, rct_viewport** viewport) { InteractionInfo info{}; - auto dynamicScreenCoords = screenCoords; if (window != nullptr && window->viewport != nullptr) { rct_viewport* myviewport = window->viewport; - dynamicScreenCoords.x -= (int32_t)myviewport->x; - dynamicScreenCoords.y -= (int32_t)myviewport->y; - if (dynamicScreenCoords.x >= 0 && dynamicScreenCoords.x < (int32_t)myviewport->width && dynamicScreenCoords.y >= 0 - && dynamicScreenCoords.y < (int32_t)myviewport->height) + screenCoords.x -= (int32_t)myviewport->x; + screenCoords.y -= (int32_t)myviewport->y; + if (screenCoords.x >= 0 && screenCoords.x < (int32_t)myviewport->width && screenCoords.y >= 0 + && screenCoords.y < (int32_t)myviewport->height) { - dynamicScreenCoords.x <<= myviewport->zoom; - dynamicScreenCoords.y <<= myviewport->zoom; - dynamicScreenCoords.x += (int32_t)myviewport->view_x; - dynamicScreenCoords.y += (int32_t)myviewport->view_y; - dynamicScreenCoords.x &= (0xFFFF << myviewport->zoom) & 0xFFFF; - dynamicScreenCoords.y &= (0xFFFF << myviewport->zoom) & 0xFFFF; + screenCoords.x <<= myviewport->zoom; + screenCoords.y <<= myviewport->zoom; + screenCoords.x += (int32_t)myviewport->view_x; + screenCoords.y += (int32_t)myviewport->view_y; + screenCoords.x &= (0xFFFF << myviewport->zoom) & 0xFFFF; + screenCoords.y &= (0xFFFF << myviewport->zoom) & 0xFFFF; rct_drawpixelinfo dpi; - dpi.x = dynamicScreenCoords.x; - dpi.y = dynamicScreenCoords.y; + dpi.x = screenCoords.x; + dpi.y = screenCoords.y; dpi.height = 1; dpi.zoom_level = myviewport->zoom; dpi.width = 1; diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 313fbc2a35..a596b25899 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -165,7 +165,7 @@ void get_map_coordinates_from_pos( const ScreenCoordsXY& screenCoords, int32_t flags, CoordsXY& mapCoords, int32_t* interactionType, TileElement** tileElement, rct_viewport** viewport); void get_map_coordinates_from_pos_window( - rct_window* window, const ScreenCoordsXY& screenCoords, int32_t flags, CoordsXY& mapCoords, int32_t* interactionType, + rct_window* window, ScreenCoordsXY screenCoords, int32_t flags, CoordsXY& mapCoords, int32_t* interactionType, TileElement** tileElement, rct_viewport** viewport); InteractionInfo set_interaction_info_from_paint_session(paint_session* session, uint16_t filter); diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index afb53f2425..e7d9ebeabf 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -1876,19 +1876,18 @@ static void window_snap_bottom(rct_window* w, int32_t proximity) w->y = topMost - w->height; } -void window_move_and_snap(rct_window* w, const ScreenCoordsXY& newWindowCoords, int32_t snapProximity) +void window_move_and_snap(rct_window* w, ScreenCoordsXY newWindowCoords, int32_t snapProximity) { int32_t originalX = w->x; int32_t originalY = w->y; int32_t minY = (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) ? 1 : TOP_TOOLBAR_HEIGHT + 2; - auto destinationCords = newWindowCoords; - destinationCords.y = std::clamp(destinationCords.y, minY, context_get_height() - 34); + newWindowCoords.y = std::clamp(newWindowCoords.y, minY, context_get_height() - 34); if (snapProximity > 0) { - w->x = destinationCords.x; - w->y = destinationCords.y; + w->x = newWindowCoords.x; + w->y = newWindowCoords.y; window_snap_right(w, snapProximity); window_snap_bottom(w, snapProximity); @@ -1898,13 +1897,13 @@ void window_move_and_snap(rct_window* w, const ScreenCoordsXY& newWindowCoords, if (w->x == originalX && w->y == originalY) return; - destinationCords.x = w->x; - destinationCords.y = w->y; + newWindowCoords.x = w->x; + newWindowCoords.y = w->y; w->x = originalX; w->y = originalY; } - window_set_position(w, destinationCords); + window_set_position(w, newWindowCoords); } int32_t window_can_resize(rct_window* w) diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 6510c1f744..09854ee100 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -748,7 +748,7 @@ void window_event_scroll_paint_call(rct_window* w, rct_drawpixelinfo* dpi, int32 void invalidate_all_windows_after_input(); void textinput_cancel(); -void window_move_and_snap(rct_window* w, const ScreenCoordsXY& newWindowCoords, int32_t snapProximity); +void window_move_and_snap(rct_window* w, ScreenCoordsXY newWindowCoords, int32_t snapProximity); int32_t window_can_resize(rct_window* w); void window_start_textbox(