From 746d784b0e1e6033d2791c7ae5302ad0d41d34c4 Mon Sep 17 00:00:00 2001 From: Ted John Date: Wed, 7 Aug 2019 21:25:28 +0100 Subject: [PATCH] Fix placing track designs when ride 0 is not allocated --- src/openrct2-ui/windows/TrackDesignPlace.cpp | 6 +++--- src/openrct2/ride/TrackDesign.cpp | 2 +- src/openrct2/ride/TrackDesignSave.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 5a2b8afe71..4ce4c2400c 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -267,7 +267,7 @@ static void window_track_place_toolupdate(rct_window* w, rct_widgetindex widgetI // Check if tool map position has changed since last update if (mapX == _window_track_place_last_x && mapY == _window_track_place_last_y) { - place_virtual_track(_trackDesign, PTD_OPERATION_DRAW_OUTLINES, true, get_ride(0), mapX, mapY, 0); + place_virtual_track(_trackDesign, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), mapX, mapY, 0); return; } @@ -306,7 +306,7 @@ static void window_track_place_toolupdate(rct_window* w, rct_widgetindex widgetI widget_invalidate(w, WIDX_PRICE); } - place_virtual_track(_trackDesign, PTD_OPERATION_DRAW_OUTLINES, true, get_ride(0), mapX, mapY, mapZ); + place_virtual_track(_trackDesign, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), mapX, mapY, mapZ); } /** @@ -436,7 +436,7 @@ static int32_t window_track_place_get_base_z(int32_t x, int32_t y) if (tileElement->AsSurface()->GetWaterHeight() > 0) z = std::max(z, tileElement->AsSurface()->GetWaterHeight() << 4); - return z + place_virtual_track(_trackDesign, PTD_OPERATION_GET_PLACE_Z, true, get_ride(0), x, y, z); + return z + place_virtual_track(_trackDesign, PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(0), x, y, z); } static void window_track_place_attempt_placement( diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 95a4bd6e65..05063939f9 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1750,7 +1750,7 @@ static bool track_design_place_preview(rct_track_td6* td6, money32* cost, Ride** int32_t mapSize = gMapSize << 4; _currentTrackPieceDirection = 0; - int32_t z = place_virtual_track(td6, PTD_OPERATION_GET_PLACE_Z, true, get_ride(0), mapSize, mapSize, 16); + int32_t z = place_virtual_track(td6, PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(0), mapSize, mapSize, 16); if (_trackDesignPlaceStateHasScenery) { diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index 62cc859dd5..d7c5dd9d65 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -989,7 +989,7 @@ static bool track_design_save_to_td6_for_maze(const Ride* ride, rct_track_td6* t // Save global vars as they are still used by scenery int16_t startZ = gTrackPreviewOrigin.z; - place_virtual_track(td6, PTD_OPERATION_DRAW_OUTLINES, true, get_ride(0), 4096, 4096, 0); + place_virtual_track(td6, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), 4096, 4096, 0); gTrackPreviewOrigin = { startX, startY, startZ }; gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT; @@ -1180,7 +1180,7 @@ static bool track_design_save_to_td6_for_tracked_ride(const Ride* ride, rct_trac td6->entrance_elements, numEntranceElements * sizeof(rct_td6_entrance_element) + 1); *((uint8_t*)&td6->entrance_elements[numEntranceElements]) = 0xFF; - place_virtual_track(td6, PTD_OPERATION_DRAW_OUTLINES, true, get_ride(0), 4096, 4096, 0); + place_virtual_track(td6, PTD_OPERATION_DRAW_OUTLINES, true, GetOrAllocateRide(0), 4096, 4096, 0); // Resave global vars for scenery reasons. gTrackPreviewOrigin = { start_x, start_y, start_z };