From 4e6935f689b5005c1b0aee158fb4732fe65d7339 Mon Sep 17 00:00:00 2001 From: Nils Caspar Date: Sun, 6 Sep 2020 00:56:41 -0700 Subject: [PATCH] Consistently render various height marks when zoomed in (#12853) --- src/openrct2/paint/tile_element/Paint.Entrance.cpp | 4 +--- src/openrct2/paint/tile_element/Paint.Path.cpp | 2 +- src/openrct2/paint/tile_element/Paint.Surface.cpp | 2 +- src/openrct2/paint/tile_element/Paint.TileElement.cpp | 6 ++++++ src/openrct2/paint/tile_element/Paint.TileElement.h | 2 ++ src/openrct2/ride/TrackPaint.cpp | 4 +--- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 1df178194d..8886761e9b 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -340,9 +340,7 @@ void entrance_paint(paint_session* session, uint8_t direction, int32_t height, c { session->InteractionType = VIEWPORT_INTERACTION_ITEM_LABEL; - rct_drawpixelinfo* dpi = &session->DPI; - - if (session->ViewFlags & VIEWPORT_FLAG_PATH_HEIGHTS && dpi->zoom_level <= 0) + if (PaintShouldShowHeightMarkers(session, VIEWPORT_FLAG_PATH_HEIGHTS)) { if (entrance_get_directions(tile_element) & 0xF) { diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index d0a074f263..9ad09c2b27 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -930,7 +930,7 @@ void path_paint(paint_session* session, uint16_t height, const TileElement* tile } } - if (session->ViewFlags & VIEWPORT_FLAG_PATH_HEIGHTS) + if (PaintShouldShowHeightMarkers(session, VIEWPORT_FLAG_PATH_HEIGHTS)) { uint16_t heightMarkerBaseZ = tile_element->GetBaseZ() + 3; if (tile_element->AsPath()->IsSloped()) diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index 20a4427300..485abcc5b9 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -1015,7 +1015,7 @@ void surface_paint(paint_session* session, uint8_t direction, uint16_t height, c descriptor.corner_heights.left = baseHeight + ch.left; } - if ((session->ViewFlags & VIEWPORT_FLAG_LAND_HEIGHTS) && (zoomLevel == 0)) + if (PaintShouldShowHeightMarkers(session, VIEWPORT_FLAG_LAND_HEIGHTS)) { const int16_t x = session->MapPosition.x; const int16_t y = session->MapPosition.y; diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index 98fc43874e..7085b92a2b 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -453,3 +453,9 @@ uint16_t paint_util_rotate_segments(uint16_t segments, uint8_t rotation) return (segments & 0xFF00) | temp; } + +bool PaintShouldShowHeightMarkers(const paint_session* session, const uint32_t viewportFlag) +{ + auto dpi = &session->DPI; + return (session->ViewFlags & viewportFlag) && (dpi->zoom_level <= 0); +} diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.h b/src/openrct2/paint/tile_element/Paint.TileElement.h index 809fc150b9..c7cb5ecf06 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.h +++ b/src/openrct2/paint/tile_element/Paint.TileElement.h @@ -111,4 +111,6 @@ void fence_paint(paint_session* session, uint8_t direction, int32_t height, cons void large_scenery_paint(paint_session* session, uint8_t direction, uint16_t height, const TileElement* tileElement); void track_paint(paint_session* session, uint8_t direction, int32_t height, const TileElement* tileElement); +bool PaintShouldShowHeightMarkers(const paint_session* session, const uint32_t viewportFlag); + #endif diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index d19a37e8ab..10abd76cbd 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -2143,8 +2143,6 @@ void track_paint(paint_session* session, uint8_t direction, int32_t height, cons return; } - rct_drawpixelinfo* dpi = &session->DPI; - if ((!gTrackDesignSaveMode || rideIndex == gTrackDesignSaveRideIndex) && !(session->ViewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES)) { @@ -2152,7 +2150,7 @@ void track_paint(paint_session* session, uint8_t direction, int32_t height, cons int32_t trackSequence = tileElement->AsTrack()->GetSequenceIndex(); int32_t trackColourScheme = tileElement->AsTrack()->GetColourScheme(); - if ((session->ViewFlags & VIEWPORT_FLAG_TRACK_HEIGHTS) && dpi->zoom_level <= 0) + if (PaintShouldShowHeightMarkers(session, VIEWPORT_FLAG_TRACK_HEIGHTS)) { session->InteractionType = VIEWPORT_INTERACTION_ITEM_NONE; if (TrackHeightMarkerPositions[trackType] & (1 << trackSequence))