diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 1b75ae7134..e922f7973c 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -161,7 +161,22 @@ public: return window_install_track_open(intent->GetStringExtra(INTENT_EXTRA_PATH)); case WC_GUEST_LIST: return window_guest_list_open_with_filter(intent->GetSIntExtra(INTENT_EXTRA_GUEST_LIST_FILTER), intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID)); + case WC_LOADSAVE: + { + uint32 type = intent->GetUIntExtra(INTENT_EXTRA_LOADSAVE_TYPE); + utf8 *defaultName = intent->GetStringExtra(INTENT_EXTRA_PATH) + loadsave_callback callback = static_cast(intent->GetPointerExtra(INTENT_EXTRA_CALLBACK)); + rct_window *w = window_loadsave_open(type, defaultName); + window_loadsave_set_loadsave_callback(callback); + return w; + } + case WC_MANAGE_TRACK_DESIGN: + return window_track_manage_open((track_design_file_ref *) intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)); + case WC_TRACK_DESIGN_PLACE: + return window_track_place_open((track_design_file_ref *) intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)); + case WC_SCENARIO_SELECT: + return window_scenarioselect_open((scenarioselect_callback) intent->GetPointerExtra(INTENT_EXTRA_CALLBACK)); default: return nullptr; } diff --git a/src/openrct2-ui/windows/Window.h b/src/openrct2-ui/windows/Window.h index 99df68114f..2c4c77b834 100644 --- a/src/openrct2-ui/windows/Window.h +++ b/src/openrct2-ui/windows/Window.h @@ -21,6 +21,7 @@ #include typedef void (*loadsave_callback)(sint32 result, const utf8 * path); +typedef void (*scenarioselect_callback)(const utf8 *path); rct_window * window_about_open(); rct_window * window_changelog_open(); @@ -87,3 +88,5 @@ rct_window * window_error_open(rct_string_id title, rct_string_id message); rct_window * window_loadsave_open(sint32 type, char *defaultName); void window_loadsave_set_loadsave_callback(loadsave_callback cb); +rct_window * window_track_place_open(const struct track_design_file_ref *tdFileRef); +rct_window * window_track_manage_open(struct track_design_file_ref *tdFileRef); diff --git a/src/openrct2/interface/window.h b/src/openrct2/interface/window.h index 574232464b..b5bb721f27 100644 --- a/src/openrct2/interface/window.h +++ b/src/openrct2/interface/window.h @@ -604,7 +604,6 @@ typedef enum { } TOOL_IDX; typedef void (*modal_callback)(sint32 result); -typedef void (*scenarioselect_callback)(const utf8 *path); typedef void (*close_callback)(); @@ -727,7 +726,6 @@ void ride_construction_tooldown_construct(sint32 screenX, sint32 screenY); void window_maze_construction_update_pressed_widgets(); -void window_track_place_open(const struct track_design_file_ref *tdFileRef); rct_window *window_new_ride_open(); rct_window *window_new_ride_open_research(); void window_network_status_open(const char* text, close_callback onClose); @@ -739,7 +737,6 @@ void window_research_development_page_paint(rct_window *w, rct_drawpixelinfo *dp void window_research_funding_page_paint(rct_window *w, rct_drawpixelinfo *dpi, rct_widgetindex baseWidgetIndex); void window_scenery_open(); -void window_track_manage_open(struct track_design_file_ref *tdFileRef); void window_tile_inspector_open(); void window_tile_inspector_clear_clipboard(); void window_text_input_open(rct_window* call_w, rct_widgetindex call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uintptr_t existing_args, sint32 maxLength);