From 3003e1de75840390dad199eb63d11fb7fb0bfb29 Mon Sep 17 00:00:00 2001 From: Duncan Date: Fri, 13 Mar 2020 08:32:05 +0000 Subject: [PATCH] Fix #10602: Error adding track scenery additions far from station start Issue caused due to stuffing a temporary unsigned variable in a signed variable. This fix is not a permanent fix and this field in the future should be split up into two separate fields: tile position and relative tile position. Co-authored-by: Gymnasiast --- src/openrct2/ride/TrackDesign.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 930bad05d6..d60154bc8b 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -528,7 +528,9 @@ rct_string_id TrackDesign::CreateTrackDesignScenery() } } - CoordsXY sceneryMapPos{ scenery.x * 32 - gTrackPreviewOrigin.x, scenery.y * 32 - gTrackPreviewOrigin.y }; + // Cast the value into a uint8_t as this value is not signed yet. + auto sceneryPos = TileCoordsXY(static_cast(scenery.x), static_cast(scenery.y)).ToCoordsXY(); + CoordsXY sceneryMapPos = sceneryPos - gTrackPreviewOrigin; CoordsXY rotatedSceneryMapPos = sceneryMapPos.Rotate(0 - _saveDirection); TileCoordsXY sceneryTilePos{ rotatedSceneryMapPos };