diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 1652bf2303..fb567b13a2 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -205,6 +205,13 @@ public: return window_ride_main_open(intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID)); case WC_TRACK_DESIGN_PLACE: return window_track_place_open((track_design_file_ref *) intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)); + case WC_TRACK_DESIGN_LIST: + { + ride_list_item rideItem; + rideItem.type = intent->GetUIntExtra(INTENT_EXTRA_RIDE_TYPE); + rideItem.entry_index = intent->GetUIntExtra(INTENT_EXTRA_RIDE_ENTRY_INDEX); + return window_track_list_open(rideItem); + } case WC_SCENARIO_SELECT: return window_scenarioselect_open((scenarioselect_callback) intent->GetPointerExtra(INTENT_EXTRA_CALLBACK)); case WD_VEHICLE: diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index e5e638d4db..d97d058e3e 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -34,6 +34,7 @@ #include #include #include +#include static uint8 _windowNewRideCurrentTab; static ride_list_item _windowNewRideHighlightedItem[6]; @@ -1013,7 +1014,10 @@ static void window_new_ride_select(rct_window *w) if (allowTrackDesigns && ride_type_has_flag(item.type, RIDE_TYPE_FLAG_HAS_TRACK)) { if (_lastTrackDesignCount > 0) { - window_track_list_open(item); + auto intent = Intent(WC_TRACK_DESIGN_LIST); + intent.putExtra(INTENT_EXTRA_RIDE_TYPE, item.type); + intent.putExtra(INTENT_EXTRA_RIDE_ENTRY_INDEX, item.entry_index); + context_open_intent(&intent); return; } } diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 07b311e132..8f33ceac2c 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -229,7 +229,11 @@ static void window_track_place_mouseup(rct_window *w, rct_widgetindex widgetInde break; case WIDX_SELECT_DIFFERENT_DESIGN: window_close(w); - window_track_list_open(_window_track_list_item); + + auto intent = Intent(WC_TRACK_DESIGN_LIST); + intent.putExtra(INTENT_EXTRA_RIDE_TYPE, _window_track_list_item.type); + intent.putExtra(INTENT_EXTRA_RIDE_ENTRY_INDEX, _window_track_list_item.entry_index); + context_open_intent(&intent); break; } } diff --git a/src/openrct2/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp similarity index 97% rename from src/openrct2/windows/TrackList.cpp rename to src/openrct2-ui/windows/TrackList.cpp index e4a7444ab3..266bb81681 100644 --- a/src/openrct2/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -14,20 +14,21 @@ *****************************************************************************/ #pragma endregion -#include "../Context.h" -#include "../drawing/IDrawingEngine.h" -#include "../ride/TrackDesignRepository.h" -#include "../OpenRCT2.h" -#include "../core/Math.hpp" -#include "../core/Memory.hpp" +#include -#include "../audio/audio.h" -#include "../Editor.h" -#include "../interface/widget.h" -#include "../localisation/localisation.h" -#include "../rct1.h" -#include "../sprites.h" -#include "../windows/Intent.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include enum { WIDX_BACKGROUND, @@ -113,7 +114,7 @@ static bool track_list_load_design_for_preview(utf8 *path); * * rct2: 0x006CF1A2 */ -static void _window_track_list_open(ride_list_item item) +rct_window * window_track_list_open(ride_list_item item) { window_close_construction_windows(); _window_track_list_item = item; @@ -155,6 +156,8 @@ static void _window_track_list_open(ride_list_item item) _loadedTrackDesign = nullptr; _loadedTrackDesignIndex = TRACK_DESIGN_INDEX_UNLOADED; + + return w; } /** @@ -644,11 +647,3 @@ static bool track_list_load_design_for_preview(utf8 *path) } return false; } - -extern "C" -{ - void window_track_list_open(ride_list_item item) - { - _window_track_list_open(item); - } -} diff --git a/src/openrct2-ui/windows/Window.h b/src/openrct2-ui/windows/Window.h index 647785cb5d..ec3e8959cd 100644 --- a/src/openrct2-ui/windows/Window.h +++ b/src/openrct2-ui/windows/Window.h @@ -112,3 +112,7 @@ rct_window * window_ride_main_open(sint32 rideIndex); rct_window * window_ride_open_track(rct_tile_element * tileElement); rct_window * window_ride_open_vehicle(rct_vehicle * vehicle); void window_ride_measurements_design_cancel(); + +// rct2: 0x00F635EE +extern ride_list_item _window_track_list_item; +rct_window * window_track_list_open(ride_list_item item); diff --git a/src/openrct2/interface/window.h b/src/openrct2/interface/window.h index 07b585207b..a9038cd606 100644 --- a/src/openrct2/interface/window.h +++ b/src/openrct2/interface/window.h @@ -630,9 +630,6 @@ extern rct_window * gWindowFirst; extern rct_window * gWindowNextSlot; extern rct_window * gWindowAudioExclusive; -// rct2: 0x00F635EE -extern ride_list_item _window_track_list_item; - extern uint16 gWindowUpdateTicks; extern uint8 gToolbarDirtyFlags; extern uint16 gWindowMapFlashingFlags; @@ -719,7 +716,6 @@ void window_resize_gui_scenario_editor(sint32 width, sint32 height); void window_top_toolbar_open(); void window_game_bottom_toolbar_open(); void window_game_bottom_toolbar_invalidate_news_item(); -void window_track_list_open(ride_list_item item); void window_ride_construct(rct_window *w); rct_window *window_ride_construction_open(); rct_window *window_maze_construction_open(); diff --git a/src/openrct2/windows/EditorObjectSelection.cpp b/src/openrct2/windows/EditorObjectSelection.cpp index f7b9d035c7..4b698b51d3 100644 --- a/src/openrct2/windows/EditorObjectSelection.cpp +++ b/src/openrct2/windows/EditorObjectSelection.cpp @@ -1659,9 +1659,10 @@ static void window_editor_object_selection_manage_tracks() rct_ride_entry* ride_entry = get_ride_entry(entry_index); uint8 ride_type = ride_entry_get_first_non_null_ride_type(ride_entry); - ride_list_item item = { ride_type, (uint8) entry_index }; - // track_load_list(item); - window_track_list_open(item); + auto intent = Intent(WC_TRACK_DESIGN_LIST); + intent.putExtra(INTENT_EXTRA_RIDE_TYPE, ride_type); + intent.putExtra(INTENT_EXTRA_RIDE_ENTRY_INDEX, entry_index); + context_open_intent(&intent); } /**