From ae69718b53d05128d5eeb33e972698bda5493a10 Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Wed, 25 Feb 2015 18:26:37 +0000 Subject: [PATCH] refactor ride_construct, fixes #725 --- src/ride/ride.c | 17 ++++++++++------- src/windows/ride.c | 17 +---------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/ride/ride.c b/src/ride/ride.c index a06be3e53a..f662cf3654 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -569,15 +569,18 @@ void ride_construct_new(ride_list_item listItem) */ void ride_construct(int rideIndex) { + rct_xy_element trackElement; rct_window *w; - // Open construction window - // HACK In the original game this created a mouse up event. This has been - // replaced with a direct call to the function that gets called. - // Eventually should be changed so the ride window does not need to be opened. - w = window_ride_main_open(rideIndex); - window_ride_construct(w); - window_close_by_number(WC_RIDE, rideIndex); + if (sub_6CAF80(rideIndex, &trackElement)) { + ride_find_track_gap(&trackElement, &trackElement); + + w = window_get_main(); + if (w != NULL && ride_modify(&trackElement)) + window_scroll_to_location(w, trackElement.x, trackElement.y, trackElement.element->base_height * 8); + } else { + sub_6CC3FB(rideIndex); + } } /** diff --git a/src/windows/ride.c b/src/windows/ride.c index 6273acf31d..8a642075fb 100644 --- a/src/windows/ride.c +++ b/src/windows/ride.c @@ -1530,23 +1530,8 @@ static void window_ride_init_viewport(rct_window *w) */ void window_ride_construct(rct_window *w) { - int rideIndex = w->number; - rct_xy_element trackElement; - window_close_by_class(WC_RIDE_CONSTRUCTION); - w = window_find_by_number(WC_RIDE, rideIndex); - if (w == NULL) - return; - - if (sub_6CAF80(rideIndex, &trackElement)) { - ride_find_track_gap(&trackElement, &trackElement); - - w = window_get_main(); - if (w != NULL && ride_modify(&trackElement)) - window_scroll_to_location(w, trackElement.x, trackElement.y, trackElement.element->base_height * 8); - } else { - sub_6CC3FB(rideIndex); - } + ride_construct(w->number); } /**