From 8784dfbf418baf61e012f1e40edb6625dd39acdb Mon Sep 17 00:00:00 2001 From: moTechPlz Date: Tue, 7 Aug 2018 16:20:51 +0200 Subject: [PATCH] Fix #7462: Guest window goes beyond the map edge on a spiral slide. (#7752) --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Guest.cpp | 6 ++++-- src/openrct2-ui/windows/Ride.cpp | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 80d3bef33f..8e5a16ce2a 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -8,6 +8,7 @@ - Feature: [#7797, #7802, #7821, #7830] Add sprite font glyphs for Danish, Norwegian, Russian, Turkish, Catalan and Romanian. - Fix: [#3177] Wrong keys displayed in shortcut menu. - Fix: [#4039] No sprite font glyph for German opening quotation mark. +- Fix: [#7462] Guest window goes beyond the map edge on a spiral slide. - Fix: [#7533] Screenshot is incorrectly named/file is not generated in CJK language. - Fix: [#7628] Always-researched items can be modified in the inventory list. - Fix: [#7643] No Money scenarios with funding set to zero. diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 507273a34c..db33df753b 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -762,7 +762,8 @@ void window_guest_viewport_init(rct_window* w) if (w->viewport) { // Check all combos, for now skipping y and rot - if (focus.coordinate.x == w->viewport_focus_coordinates.x && focus.coordinate.y == w->viewport_focus_coordinates.y + if (focus.coordinate.x == w->viewport_focus_coordinates.x + && (focus.coordinate.y & VIEWPORT_FOCUS_Y_MASK) == w->viewport_focus_coordinates.y && focus.coordinate.z == w->viewport_focus_coordinates.z && focus.coordinate.rotation == w->viewport_focus_coordinates.rotation) return; @@ -799,8 +800,9 @@ void window_guest_viewport_init(rct_window* w) int32_t height = view_widget->bottom - view_widget->top - 1; viewport_create( - w, x, y, width, height, 0, focus.coordinate.x, focus.coordinate.y, focus.coordinate.z, + w, x, y, width, height, 0, focus.coordinate.x, focus.coordinate.y & VIEWPORT_FOCUS_Y_MASK, focus.coordinate.z, focus.sprite.type & VIEWPORT_FOCUS_TYPE_MASK, focus.sprite.sprite_id); + w->flags |= WF_NO_SCROLLING; window_invalidate(w); } diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 7fc7c5aabc..c90aebf930 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1887,7 +1887,8 @@ static void window_ride_init_viewport(rct_window* w) if (w->viewport != nullptr) { - if (focus.coordinate.x == w->viewport_focus_coordinates.x && focus.coordinate.y == w->viewport_focus_coordinates.y + if (focus.coordinate.x == w->viewport_focus_coordinates.x + && (focus.coordinate.y & VIEWPORT_FOCUS_Y_MASK) == w->viewport_focus_coordinates.y && focus.coordinate.z == w->viewport_focus_coordinates.z && focus.coordinate.rotation == w->viewport_focus_coordinates.rotation && focus.coordinate.zoom == w->viewport_focus_coordinates.zoom && focus.coordinate.width == w->width