/** * * rct2: 0x006D386D */ rct_window* window_install_track_open(const utf8* path) { _trackDesign = track_design_open(path); if (_trackDesign == nullptr) { context_show_error(STR_UNABLE_TO_LOAD_FILE, STR_NONE); return nullptr; } object_manager_unload_all_objects(); if (_trackDesign->type == RIDE_TYPE_NULL) { log_error("Failed to load track (ride type null): %s", path); return nullptr; } if (object_manager_load_object(&_trackDesign->vehicle_object) == nullptr) { log_error("Failed to load track (vehicle load fail): %s", path); return nullptr; } window_close_by_class(WC_EDITOR_OBJECT_SELECTION); window_close_construction_windows(); gTrackDesignSceneryToggle = false; _currentTrackPieceDirection = 2; int32_t screenWidth = context_get_width(); int32_t screenHeight = context_get_height(); int32_t x = screenWidth / 2 - 201; int32_t y = std::max(TOP_TOOLBAR_HEIGHT + 1, screenHeight / 2 - 200); rct_window* w = window_create(x, y, WW, WH, &window_install_track_events, WC_INSTALL_TRACK, 0); w->widgets = window_install_track_widgets; w->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_ROTATE) | (1 << WIDX_TOGGLE_SCENERY) | (1 << WIDX_INSTALL) | (1 << WIDX_CANCEL); window_init_scroll_widgets(w); w->track_list.track_list_being_updated = false; window_push_others_right(w); _trackPath = path; _trackName = GetNameFromTrackPath(path); _trackDesignPreviewPixels.resize(4 * TRACK_PREVIEW_IMAGE_SIZE); window_install_track_update_preview(); window_invalidate(w); return w; }
/** * * rct2: 0x006D407A */ static void window_install_track_mouseup(rct_window *w, rct_widgetindex widgetIndex) { switch (widgetIndex) { case WIDX_CLOSE: case WIDX_CANCEL: window_close(w); break; case WIDX_ROTATE: _currentTrackPieceDirection++; _currentTrackPieceDirection %= 4; window_invalidate(w); break; case WIDX_TOGGLE_SCENERY: gTrackDesignSceneryToggle = !gTrackDesignSceneryToggle; window_install_track_update_preview(); window_invalidate(w); break; case WIDX_INSTALL: window_install_track_design(w); break; } }