1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-04 13:42:55 +01:00

Revert to copy instead of const-ref for functions that edit content

This commit is contained in:
Tulio Leao
2020-03-01 00:47:35 -03:00
parent 9bcd20e0e6
commit 91c4735917
9 changed files with 48 additions and 55 deletions

View File

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

View File

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

View File

@@ -2108,10 +2108,9 @@ static void window_ride_construction_update(rct_window* w)
*
* rct2: 0x006CC538
*/
static std::optional<CoordsXY> ride_get_place_position_from_screen_position(const ScreenCoordsXY& screenCoords)
static std::optional<CoordsXY> ride_get_place_position_from_screen_position(ScreenCoordsXY screenCoords)
{
CoordsXY mapCoords;
auto dynamicScreenCoords = screenCoords;
if (!_trackPlaceCtrlState)
{
@@ -2120,7 +2119,7 @@ static std::optional<CoordsXY> 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<CoordsXY> 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<CoordsXY> ride_get_place_position_from_screen_position(cons
constexpr uint16_t maxHeight = (std::numeric_limits<decltype(TileElement::base_height)>::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<CoordsXY> ride_get_place_position_from_screen_position(cons
// Clamp to maximum possible value of base_height can offer.
_trackPlaceShiftZ = std::min<int16_t>(_trackPlaceShiftZ, maxHeight);
dynamicScreenCoords = _trackPlaceShiftStart;
screenCoords = _trackPlaceShiftStart;
}
else
{
@@ -2174,7 +2173,7 @@ static std::optional<CoordsXY> 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<CoordsXY> 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;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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