1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-28 09:14:58 +01:00

Fix #4531: Ride sound focus not available any longer

Only reset the ride viewport if it the window has actually been resized and maintain the viewport flags.
This commit is contained in:
Ted John
2016-10-05 19:08:20 +01:00
parent 0341935ee4
commit 001120e6b2
2 changed files with 13 additions and 11 deletions

View File

@@ -120,6 +120,8 @@ typedef struct coordinate_focus {
sint16 z; //0x486
uint8 rotation;//0x488
uint8 zoom;//0x489
sint16 width;
sint16 height;
} coordinate_focus;
// Type is viewport_target_sprite_id & 0x80000000 != 0

View File

@@ -1856,7 +1856,8 @@ static void window_ride_init_viewport(rct_window *w)
focus.sprite.sprite_id = -1;
focus.coordinate.zoom = 0;
focus.coordinate.rotation = get_current_rotation();
focus.coordinate.width = 0;
focus.coordinate.height = 0;
if (eax >= 0 && eax < ride->num_vehicles && ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK){
focus.sprite.sprite_id = ride->vehicles[eax];
@@ -1902,16 +1903,20 @@ static void window_ride_init_viewport(rct_window *w)
uint16 viewport_flags = 0;
if (w->viewport != 0){
if (w->viewport != NULL) {
if (focus.coordinate.x == w->viewport_focus_coordinates.x &&
focus.coordinate.y == 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.zoom == w->viewport_focus_coordinates.zoom &&
focus.coordinate.width == w->width &&
focus.coordinate.height == w->height
) {
return;
}
viewport_flags = w->viewport->flags;
w->viewport->width = 0;
w->viewport = 0;
w->viewport = NULL;
viewport_update_pointers();
} else if (gConfigGeneral.always_show_gridlines) {
@@ -1925,6 +1930,8 @@ static void window_ride_init_viewport(rct_window *w)
w->viewport_focus_coordinates.z = focus.coordinate.z;
w->viewport_focus_coordinates.rotation = focus.coordinate.rotation;
w->viewport_focus_coordinates.zoom = focus.coordinate.zoom;
w->viewport_focus_coordinates.width = w->width;
w->viewport_focus_coordinates.height = w->height;
//rct2: 0x006aec9c only used here so brought it into the function
if (!w->viewport && ride->overall_view != 0xFFFF){
@@ -2051,13 +2058,6 @@ static void window_ride_main_resize(rct_window *w)
if (theme_get_flags() & UITHEME_FLAG_USE_LIGHTS_RIDE)
minHeight = 200 + offset + RCT1_LIGHT_OFFSET - (ride_type_has_flag(get_ride(w->number)->type, RIDE_TYPE_FLAG_NO_TEST_MODE) ? 14 : 0);
window_set_resize(w, 316, minHeight, 500, 450);
rct_viewport *viewport = w->viewport;
if (viewport != NULL) {
viewport->width = 0;
w->viewport = NULL;
}
window_ride_init_viewport(w);
}