/** * * rct2: 0x006D2804, 0x006D264D */ bool track_design_save(uint8 rideIndex) { rct_ride* ride = get_ride(rideIndex); if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)){ window_error_open(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } if (!ride_has_ratings(ride)) { window_error_open(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_TRACK)) { window_error_open(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } _trackDesign = track_design_save_to_td6(rideIndex); if (_trackDesign == NULL) { window_error_open(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } if (gTrackDesignSaveMode) { if (!track_design_save_copy_scenery_to_td6(_trackDesign)) { free(_trackDesign->track_elements); free(_trackDesign->entrance_elements); free(_trackDesign); return false; } } utf8 track_name[256]; format_string(track_name, sizeof(track_name), ride->name, &ride->name_arguments); window_loadsave_open(LOADSAVETYPE_TRACK | LOADSAVETYPE_SAVE, track_name); window_loadsave_set_loadsave_callback(track_design_save_callback); return true; }
/** * * rct2: 0x006D2804, 0x006D264D */ bool track_design_save(uint8 rideIndex) { Ride* ride = get_ride(rideIndex); if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)){ context_show_error(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } if (!ride_has_ratings(ride)) { context_show_error(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } _trackDesign = track_design_save_to_td6(rideIndex); if (_trackDesign == nullptr) { context_show_error(STR_CANT_SAVE_TRACK_DESIGN, gGameCommandErrorText); return false; } if (gTrackDesignSaveMode) { if (!track_design_save_copy_scenery_to_td6(_trackDesign)) { free(_trackDesign->track_elements); free(_trackDesign->entrance_elements); free(_trackDesign); return false; } } utf8 track_name[256]; format_string(track_name, sizeof(track_name), ride->name, &ride->name_arguments); auto intent = Intent(WC_LOADSAVE); intent.putExtra(INTENT_EXTRA_LOADSAVE_TYPE, LOADSAVETYPE_SAVE | LOADSAVETYPE_TRACK); intent.putExtra(INTENT_EXTRA_PATH, std::string{track_name}); intent.putExtra(INTENT_EXTRA_CALLBACK, (void *) track_design_save_callback); context_open_intent(&intent); return true; }