From b39a0037f013de5bfe1e43d0c4d3c9c494737b01 Mon Sep 17 00:00:00 2001 From: frutiemax Date: Mon, 13 Jul 2020 15:37:10 -0400 Subject: [PATCH] Close #12164: Use Coords for place_virtual_track (#12240) --- src/openrct2-ui/windows/TrackDesignPlace.cpp | 16 ++++++------- src/openrct2/actions/TrackDesignAction.cpp | 2 +- src/openrct2/ride/TrackDesign.cpp | 24 ++++++++------------ src/openrct2/ride/TrackDesign.h | 3 +-- 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 2c5e5eab49..6259709fb7 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -287,8 +287,7 @@ static void window_track_place_toolupdate(rct_window* w, rct_widgetindex widgetI // Check if tool map position has changed since last update if (mapCoords.x == _window_track_place_last_x && mapCoords.y == _window_track_place_last_y) { - place_virtual_track( - _trackDesign.get(), PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), mapCoords.x, mapCoords.y, 0); + place_virtual_track(_trackDesign.get(), PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), { mapCoords, 0 }); return; } @@ -331,8 +330,7 @@ static void window_track_place_toolupdate(rct_window* w, rct_widgetindex widgetI widget_invalidate(w, WIDX_PRICE); } - place_virtual_track( - _trackDesign.get(), PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), trackLoc.x, trackLoc.y, trackLoc.z); + place_virtual_track(_trackDesign.get(), PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), trackLoc); } /** @@ -436,8 +434,8 @@ static void window_track_place_clear_provisional() if (ride != nullptr) { place_virtual_track( - _trackDesign.get(), PTD_OPERATION_REMOVE_GHOST, true, ride, _window_track_place_last_valid_x, - _window_track_place_last_valid_y, _window_track_place_last_valid_z); + _trackDesign.get(), PTD_OPERATION_REMOVE_GHOST, true, ride, + { _window_track_place_last_valid_x, _window_track_place_last_valid_y, _window_track_place_last_valid_z }); _window_track_place_last_was_valid = false; } } @@ -451,8 +449,8 @@ void TrackPlaceClearProvisionalTemporarily() if (ride != nullptr) { place_virtual_track( - _trackDesign.get(), PTD_OPERATION_REMOVE_GHOST, true, ride, _window_track_place_last_valid_x, - _window_track_place_last_valid_y, _window_track_place_last_valid_z); + _trackDesign.get(), PTD_OPERATION_REMOVE_GHOST, true, ride, + { _window_track_place_last_valid_x, _window_track_place_last_valid_y, _window_track_place_last_valid_z }); } } } @@ -500,7 +498,7 @@ static int32_t window_track_place_get_base_z(const CoordsXY& loc) if (surfaceElement->GetWaterHeight() > 0) z = std::max(z, surfaceElement->GetWaterHeight()); - return z + place_virtual_track(_trackDesign.get(), PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(0), loc.x, loc.y, z); + return z + place_virtual_track(_trackDesign.get(), PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(0), { loc, z }); } /** diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 4dd265efd4..ba4f138bde 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -25,7 +25,7 @@ static int32_t place_virtual_track( const TrackDesign& td6, uint8_t ptdOperation, bool placeScenery, Ride* ride, const CoordsXYZ& loc) { - return place_virtual_track(const_cast(&td6), ptdOperation, placeScenery, ride, loc.x, loc.y, loc.z); + return place_virtual_track(const_cast(&td6), ptdOperation, placeScenery, ride, loc); } GameActionResult::Ptr TrackDesignAction::Query() const diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 7ca2d373ec..031224181c 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -333,7 +333,7 @@ rct_string_id TrackDesign::CreateTrackDesignTrack(const Ride& ride) } } - place_virtual_track(this, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), 4096, 4096, 0); + place_virtual_track(this, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), { 4096, 4096, 0 }); // Resave global vars for scenery reasons. _trackPreviewOrigin = startPos; @@ -452,7 +452,7 @@ rct_string_id TrackDesign::CreateTrackDesignMaze(const Ride& ride) // Save global vars as they are still used by scenery???? int32_t startZ = _trackPreviewOrigin.z; - place_virtual_track(this, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), 4096, 4096, 0); + place_virtual_track(this, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), { 4096, 4096, 0 }); _trackPreviewOrigin = { startLoc.x, startLoc.y, startZ }; gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT; @@ -1793,8 +1793,7 @@ static bool track_design_place_ride(TrackDesign* td6, const CoordsXYZ& origin, R * bl == 6, Clear white outlined track. * rct2: 0x006D01B3 */ -int32_t place_virtual_track( - TrackDesign* td6, uint8_t ptdOperation, bool placeScenery, Ride* ride, int16_t x, int16_t y, int16_t z) +int32_t place_virtual_track(TrackDesign* td6, uint8_t ptdOperation, bool placeScenery, Ride* ride, const CoordsXYZ& coords) { // Previously byte_F4414E was cleared here _trackDesignPlaceStatePlaceScenery = placeScenery; @@ -1811,22 +1810,18 @@ int32_t place_virtual_track( } _currentRideIndex = ride->id; - _trackPreviewMin.x = x; - _trackPreviewMin.y = y; - _trackPreviewMin.z = z; - _trackPreviewMax.x = x; - _trackPreviewMax.y = y; - _trackPreviewMax.z = z; + _trackPreviewMin = coords; + _trackPreviewMax = coords; _trackDesignPlaceSceneryZ = 0; uint8_t track_place_success = 0; if (td6->type == RIDE_TYPE_MAZE) { - track_place_success = track_design_place_maze(td6, { x, y, z }, ride); + track_place_success = track_design_place_maze(td6, coords, ride); } else { - track_place_success = track_design_place_ride(td6, { x, y, z }, ride); + track_place_success = track_design_place_ride(td6, coords, ride); } // Scenery elements @@ -1935,7 +1930,7 @@ static bool track_design_place_preview(TrackDesign* td6, money32* cost, Ride** o int32_t mapSize = gMapSize << 4; _currentTrackPieceDirection = 0; - int32_t z = place_virtual_track(td6, PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(0), mapSize, mapSize, 16); + int32_t z = place_virtual_track(td6, PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(0), { mapSize, mapSize, 16 }); if (_trackDesignPlaceStateHasScenery) { @@ -1951,7 +1946,8 @@ static bool track_design_place_preview(TrackDesign* td6, money32* cost, Ride** o *flags |= TRACK_DESIGN_FLAG_SCENERY_UNAVAILABLE; } - money32 resultCost = place_virtual_track(td6, PTD_OPERATION_PLACE_TRACK_PREVIEW, placeScenery, ride, mapSize, mapSize, z); + money32 resultCost = place_virtual_track( + td6, PTD_OPERATION_PLACE_TRACK_PREVIEW, placeScenery, ride, { mapSize, mapSize, z }); gParkFlags = backup_park_flags; if (resultCost != MONEY32_UNDEFINED) diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 3b05beb61b..64a464fa9c 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -205,8 +205,7 @@ std::unique_ptr track_design_open(const utf8* path); void track_design_mirror(TrackDesign* td6); -int32_t place_virtual_track( - TrackDesign* td6, uint8_t ptdOperation, bool placeScenery, Ride* ride, int16_t x, int16_t y, int16_t z); +int32_t place_virtual_track(TrackDesign* td6, uint8_t ptdOperation, bool placeScenery, Ride* ride, const CoordsXYZ& coords); /////////////////////////////////////////////////////////////////////////////// // Track design preview