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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user