diff --git a/src/editor.c b/src/editor.c index 9cc88281dd..0d4a3c0e52 100644 --- a/src/editor.c +++ b/src/editor.c @@ -68,7 +68,7 @@ uint8 * gEditorSelectedObjects[OBJECT_ENTRY_GROUP_COUNT] = { _editorSelectedStexs, }; -void editor_convert_save_to_scenario_callback(int result); +static void editor_convert_save_to_scenario_callback(int result, const utf8 * path); static void set_all_land_owned(); static int editor_load_landscape_from_sv4(const char *path); static int editor_load_landscape_from_sc4(const char *path); @@ -130,12 +130,16 @@ void editor_convert_save_to_scenario() gLoadSaveCallback = editor_convert_save_to_scenario_callback; } -void editor_convert_save_to_scenario_callback(int result) +static void editor_convert_save_to_scenario_callback(int result, const utf8 * path) { if (result != MODAL_RESULT_OK) { return; } + if (!game_load_save_or_scenario(path)) { + return; + } + if (gParkFlags & PARK_FLAGS_NO_MONEY) gParkFlags |= PARK_FLAGS_NO_MONEY_SCENARIO; else diff --git a/src/game.c b/src/game.c index 1f6854dffb..84562a1b4f 100644 --- a/src/game.c +++ b/src/game.c @@ -1099,6 +1099,27 @@ void rct2_exit() openrct2_finish(); } +bool game_load_save_or_scenario(const utf8 * path) +{ + uint32 extension = get_file_extension_type(path); + switch (extension) { + case FILE_EXTENSION_SV4: + case FILE_EXTENSION_SV6: + return game_load_save(path); + case FILE_EXTENSION_SC4: + case FILE_EXTENSION_SC6: + return scenario_load_and_play_from_path(path); + } + return false; +} + +static void game_load_or_quit_no_save_prompt_callback(int result, const utf8 * path) +{ + if (result == MODAL_RESULT_OK && game_load_save_or_scenario(path)) { + gFirstTimeSave = 0; + } +} + /** * * rct2: 0x0066DB79 @@ -1113,6 +1134,7 @@ void game_load_or_quit_no_save_prompt() load_landscape(); } else { window_loadsave_open(LOADSAVETYPE_LOAD | LOADSAVETYPE_GAME, NULL); + gLoadSaveCallback = game_load_or_quit_no_save_prompt_callback; } break; case PM_SAVE_BEFORE_QUIT: diff --git a/src/game.h b/src/game.h index f197c6cef3..ab414155a3 100644 --- a/src/game.h +++ b/src/game.h @@ -186,5 +186,6 @@ void game_autosave(); void game_convert_strings_to_utf8(); void game_convert_strings_to_rct2(rct_s6_data *s6); void game_fix_save_vars(); +bool game_load_save_or_scenario(const utf8 * path); #endif diff --git a/src/interface/window.c b/src/interface/window.c index 053c0acb0f..71b75c3d8b 100644 --- a/src/interface/window.c +++ b/src/interface/window.c @@ -45,7 +45,6 @@ char gTextBoxInput[512] = { 0 }; int gMaxTextBoxInputLength = 0; int gTextBoxFrameNo = 0; bool gUsingWidgetTextBox = 0; -bool gLoadSaveTitleSequenceSave = 0; uint16 gWindowUpdateTicks; uint8 gToolbarDirtyFlags; diff --git a/src/interface/window.h b/src/interface/window.h index ad3f8fe329..b145a43356 100644 --- a/src/interface/window.h +++ b/src/interface/window.h @@ -526,10 +526,10 @@ enum GUEST_LIST_FILTER_TYPE }; typedef void (*modal_callback)(int result); +typedef void (*loadsave_callback)(int result, const utf8 * path); typedef void (*scenarioselect_callback)(const utf8 *path); -extern bool gLoadSaveTitleSequenceSave; -extern modal_callback gLoadSaveCallback; +extern loadsave_callback gLoadSaveCallback; typedef void (*close_callback)(); diff --git a/src/ride/track_design_save.c b/src/ride/track_design_save.c index e499dc9005..98a3b23dd6 100644 --- a/src/ride/track_design_save.c +++ b/src/ride/track_design_save.c @@ -122,7 +122,8 @@ void track_design_save_reset_scenery() gfx_invalidate_screen(); } -static void track_design_save_callback(int result) { +static void track_design_save_callback(int result, const utf8 * path) +{ free(_trackDesign->track_elements); free(_trackDesign->entrance_elements); free(_trackDesign->scenery_elements); diff --git a/src/windows/loadsave.c b/src/windows/loadsave.c index 933eafdf96..1bba38922f 100644 --- a/src/windows/loadsave.c +++ b/src/windows/loadsave.c @@ -123,7 +123,7 @@ typedef struct loadsave_list_item { uint8 type; } loadsave_list_item; -modal_callback gLoadSaveCallback; +loadsave_callback gLoadSaveCallback; int _listItemsCount = 0; loadsave_list_item *_listItems = NULL; @@ -157,7 +157,6 @@ static int window_loadsave_get_dir(utf8 *last_save, char *path, const char *subd rct_window *window_loadsave_open(int type, char *defaultName) { gLoadSaveCallback = NULL; - gLoadSaveTitleSequenceSave = false; _type = type; _defaultName[0] = '\0'; @@ -424,21 +423,6 @@ static void window_loadsave_textinput(rct_window *w, int widgetIndex, char *text window_invalidate(w); break; case WIDX_NEW_FILE: - if (gLoadSaveTitleSequenceSave) { - if (filename_valid_characters(text)) { - if (!title_sequence_save_exists(gCurrentTitleSequence, text)) { - title_sequence_add_save(gCurrentTitleSequence, path, text); - } - else { - window_error_open(STR_ERROR_EXISTING_NAME, STR_NONE); - } - } - else { - window_error_open(STR_ERROR_INVALID_CHARACTERS, STR_NONE); - } - return; - } - safe_strcpy(path, _directory, sizeof(path)); safe_strcat_path(path, text, sizeof(path)); path_append_extension(path, _extension, sizeof(path)); @@ -697,10 +681,10 @@ static void window_loadsave_populate_list(rct_window *w, int includeNewItem, con } } -static void window_loadsave_invoke_callback(int result) +static void window_loadsave_invoke_callback(int result, const utf8 * path) { if (gLoadSaveCallback != NULL) { - gLoadSaveCallback(result); + gLoadSaveCallback(result, path); } } @@ -736,38 +720,10 @@ static void window_loadsave_select(rct_window *w, const char *path) switch (_type & 0x0F) { case (LOADSAVETYPE_LOAD | LOADSAVETYPE_GAME) : save_path(&gConfigGeneral.last_save_game_directory, path); - uint32 extension = get_file_extension_type(path); - if (gLoadSaveTitleSequenceSave) { - utf8 newName[MAX_PATH]; - safe_strcpy(newName, path_get_filename(path), MAX_PATH); - if (extension != FILE_EXTENSION_SV6 && extension != FILE_EXTENSION_SC6) - path_append_extension(newName, ".sv6", sizeof(newName)); - if (title_sequence_save_exists(gCurrentTitleSequence, newName)) { - set_format_arg(0, intptr_t, (intptr_t)&_listItems[w->selected_list_item].name); - window_text_input_open(w, WIDX_SCROLL, STR_FILEBROWSER_RENAME_SAVE_TITLE, STR_ERROR_EXISTING_NAME, STR_STRING, (uintptr_t)_listItems[w->selected_list_item].name, 52 - 1); - } - else { - title_sequence_add_save(gCurrentTitleSequence, path, newName); - window_close(w); - } - window_loadsave_invoke_callback(MODAL_RESULT_OK); - } else if ( - (extension == FILE_EXTENSION_SV6 && game_load_save(path)) || - (extension == FILE_EXTENSION_SC6 && scenario_load_and_play_from_path(path)) || - (extension == FILE_EXTENSION_SV4 && game_load_save(path)) || - (extension == FILE_EXTENSION_SC4 && scenario_load_and_play_from_path(path)) - ) { - safe_strcpy(gScenarioSavePath, path, MAX_PATH); - gFirstTimeSave = 0; - - window_close(w); - gfx_invalidate_screen(); - window_loadsave_invoke_callback(MODAL_RESULT_OK); - } else { - // Not the best message... - window_error_open(STR_LOAD_GAME, STR_FAILED_TO_LOAD_FILE_CONTAINS_INVALID_DATA); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); - } + safe_strcpy(gScenarioSavePath, path, MAX_PATH); + window_close(w); + gfx_invalidate_screen(); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); break; case (LOADSAVETYPE_SAVE | LOADSAVETYPE_GAME) : save_path(&gConfigGeneral.last_save_game_directory, path); @@ -782,25 +738,25 @@ static void window_loadsave_select(rct_window *w, const char *path) window_close_by_class(WC_LOADSAVE); gfx_invalidate_screen(); - window_loadsave_invoke_callback(MODAL_RESULT_OK); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); } else { window_error_open(STR_SAVE_GAME, STR_GAME_SAVE_FAILED); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } } else { window_error_open(STR_SAVE_GAME, STR_GAME_SAVE_FAILED); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } break; case (LOADSAVETYPE_LOAD | LOADSAVETYPE_LANDSCAPE) : save_path(&gConfigGeneral.last_save_landscape_directory, path); if (editor_load_landscape(path)) { gfx_invalidate_screen(); - window_loadsave_invoke_callback(MODAL_RESULT_OK); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); } else { // Not the best message... window_error_open(STR_LOAD_LANDSCAPE, STR_FAILED_TO_LOAD_FILE_CONTAINS_INVALID_DATA); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } break; case (LOADSAVETYPE_SAVE | LOADSAVETYPE_LANDSCAPE) : @@ -813,14 +769,14 @@ static void window_loadsave_select(rct_window *w, const char *path) if (success) { window_close_by_class(WC_LOADSAVE); gfx_invalidate_screen(); - window_loadsave_invoke_callback(MODAL_RESULT_OK); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); } else { window_error_open(STR_SAVE_LANDSCAPE, STR_LANDSCAPE_SAVE_FAILED); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } } else { window_error_open(STR_SAVE_LANDSCAPE, STR_LANDSCAPE_SAVE_FAILED); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } break; case (LOADSAVETYPE_SAVE | LOADSAVETYPE_SCENARIO) : @@ -840,12 +796,12 @@ static void window_loadsave_select(rct_window *w, const char *path) if (success) { window_close_by_class(WC_LOADSAVE); - window_loadsave_invoke_callback(MODAL_RESULT_OK); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); title_load(); } else { window_error_open(STR_FILE_DIALOG_TITLE_SAVE_SCENARIO, STR_SCENARIO_SAVE_FAILED); gS6Info.editor_step = EDITOR_STEP_OBJECTIVE_SELECTION; - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } break; } @@ -853,7 +809,7 @@ static void window_loadsave_select(rct_window *w, const char *path) save_path(&gConfigGeneral.last_save_track_directory, path); window_install_track_open(path); window_close_by_class(WC_LOADSAVE); - window_loadsave_invoke_callback(MODAL_RESULT_OK); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); break; case (LOADSAVETYPE_SAVE | LOADSAVETYPE_TRACK) : { @@ -865,10 +821,10 @@ static void window_loadsave_select(rct_window *w, const char *path) if (success) { window_close_by_class(WC_LOADSAVE); window_ride_measurements_design_cancel(); - window_loadsave_invoke_callback(MODAL_RESULT_OK); + window_loadsave_invoke_callback(MODAL_RESULT_OK, path); } else { window_error_open(STR_FILE_DIALOG_TITLE_SAVE_TRACK, STR_TRACK_SAVE_FAILED); - window_loadsave_invoke_callback(MODAL_RESULT_FAIL); + window_loadsave_invoke_callback(MODAL_RESULT_FAIL, path); } } } diff --git a/src/windows/save_prompt.c b/src/windows/save_prompt.c index a5ad5db998..9677d0f057 100644 --- a/src/windows/save_prompt.c +++ b/src/windows/save_prompt.c @@ -74,7 +74,7 @@ static void window_save_prompt_close(rct_window *w); static void window_save_prompt_mouseup(rct_window *w, int widgetIndex); static void window_save_prompt_invalidate(rct_window *w); static void window_save_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi); -static void window_save_prompt_callback(int result); +static void window_save_prompt_callback(int result, const utf8 * path); static rct_window_event_list window_save_prompt_events = { window_save_prompt_close, @@ -259,7 +259,7 @@ static void window_save_prompt_paint(rct_window *w, rct_drawpixelinfo *dpi) window_draw_widgets(w, dpi); } -static void window_save_prompt_callback(int result) +static void window_save_prompt_callback(int result, const utf8 * path) { if (result == MODAL_RESULT_OK) { game_load_or_quit_no_save_prompt(); diff --git a/src/windows/server_start.c b/src/windows/server_start.c index 9e5ec91516..f9e6ecb0e9 100644 --- a/src/windows/server_start.c +++ b/src/windows/server_start.c @@ -159,9 +159,9 @@ static void window_server_start_scenarioselect_callback(const utf8 *path) } } -static void window_server_start_loadsave_callback(int result) +static void window_server_start_loadsave_callback(int result, const utf8 * path) { - if (result == MODAL_RESULT_OK) { + if (result == MODAL_RESULT_OK && game_load_save_or_scenario(path)) { network_begin_server(gConfigNetwork.default_port); } } diff --git a/src/windows/title_editor.c b/src/windows/title_editor.c index b03be184e5..956d36c991 100644 --- a/src/windows/title_editor.c +++ b/src/windows/title_editor.c @@ -65,6 +65,7 @@ static void window_title_editor_draw_tab_images(rct_drawpixelinfo *dpi, rct_wind static void window_title_editor_load_sequence(size_t index); static ITitleSequencePlayer * window_title_editor_get_player(); static bool window_title_editor_check_can_edit(); +static void window_title_editor_add_park_callback(int result, const utf8 * path); static rct_window_event_list window_title_editor_events = { window_title_editor_close, @@ -113,12 +114,12 @@ enum WINDOW_TITLE_EDITOR_WIDGET_IDX { WIDX_TITLE_EDITOR_NEW_BUTTON, WIDX_TITLE_EDITOR_DUPLICATE_BUTTON, WIDX_TITLE_EDITOR_DELETE_BUTTON, - WIDX_TITLE_EDITOR_RENAME_BUTTON, + WIDX_TITLE_EDITOR_RENAME_SAVE_BUTTON, // Saves Tab WIDX_TITLE_EDITOR_ADD, WIDX_TITLE_EDITOR_REMOVE, - WIDX_TITLE_EDITOR_RENAME, + WIDX_TITLE_EDITOR_RENAME_SAVE, WIDX_TITLE_EDITOR_LOAD, // Script Tab @@ -198,6 +199,8 @@ static TitleSequence * _editingTitleSequence = NULL; static bool _isSequencePlaying = false; static const utf8 * _sequenceName; +static utf8 * _renameSavePath = NULL; + static sint16 _window_title_editor_highlighted_index; static int window_title_editor_tab_animation_loops[] = { @@ -238,11 +241,11 @@ void window_title_editor_open(int tab) (1 << WIDX_TITLE_EDITOR_NEW_BUTTON) | (1 << WIDX_TITLE_EDITOR_DUPLICATE_BUTTON) | (1 << WIDX_TITLE_EDITOR_DELETE_BUTTON) | - (1 << WIDX_TITLE_EDITOR_RENAME_BUTTON) | + (1 << WIDX_TITLE_EDITOR_RENAME_SAVE_BUTTON) | (1 << WIDX_TITLE_EDITOR_ADD) | (1 << WIDX_TITLE_EDITOR_REMOVE) | - (1 << WIDX_TITLE_EDITOR_RENAME) | + (1 << WIDX_TITLE_EDITOR_RENAME_SAVE) | (1 << WIDX_TITLE_EDITOR_LOAD) | (1 << WIDX_TITLE_EDITOR_INSERT) | @@ -282,14 +285,14 @@ static void window_title_editor_close(rct_window *w) { // Close the related windows window_close_by_class(WC_TITLE_COMMAND_EDITOR); - if (gLoadSaveTitleSequenceSave) { - window_close_by_class(WC_LOADSAVE); - } FreeTitleSequence(_editingTitleSequence); _editingTitleSequence = NULL; _isSequencePlaying = false; _sequenceName = NULL; + + free(_renameSavePath); + _renameSavePath = NULL; } static void window_title_editor_mouseup(rct_window *w, int widgetIndex) @@ -320,7 +323,7 @@ static void window_title_editor_mouseup(rct_window *w, int widgetIndex) window_title_editor_load_sequence(0); } break; - case WIDX_TITLE_EDITOR_RENAME_BUTTON: + case WIDX_TITLE_EDITOR_RENAME_SAVE_BUTTON: if (window_title_editor_check_can_edit()) { window_text_input_open(w, widgetIndex, STR_TRACK_MANAGE_RENAME, STR_TITLE_EDITOR_ENTER_NAME_FOR_SEQUENCE, STR_STRING, (uintptr_t)_editingTitleSequence->Name, 64); } @@ -332,7 +335,7 @@ static void window_title_editor_mouseup(rct_window *w, int widgetIndex) case WIDX_TITLE_EDITOR_ADD: if (!_isSequenceReadOnly && !_isSequencePlaying && !commandEditorOpen) { window_loadsave_open(LOADSAVETYPE_LOAD | LOADSAVETYPE_GAME, NULL); - gLoadSaveTitleSequenceSave = true; + gLoadSaveCallback = window_title_editor_add_park_callback; } break; case WIDX_TITLE_EDITOR_REMOVE: @@ -347,7 +350,7 @@ static void window_title_editor_mouseup(rct_window *w, int widgetIndex) } } break; - case WIDX_TITLE_EDITOR_RENAME: + case WIDX_TITLE_EDITOR_RENAME_SAVE: if (window_title_editor_check_can_edit()) { if (w->selected_list_item != -1) { window_text_input_open(w, widgetIndex, STR_FILEBROWSER_RENAME_SAVE_TITLE, STR_TITLE_EDITOR_ENTER_NAME_FOR_SAVE, STR_STRING, (uintptr_t)_editingTitleSequence->Saves[w->selected_list_item], 52 - 1); @@ -605,7 +608,7 @@ static void window_title_editor_textinput(rct_window *w, int widgetIndex, char * switch (widgetIndex) { case WIDX_TITLE_EDITOR_NEW_BUTTON: case WIDX_TITLE_EDITOR_DUPLICATE_BUTTON: - case WIDX_TITLE_EDITOR_RENAME_BUTTON: + case WIDX_TITLE_EDITOR_RENAME_SAVE_BUTTON: if (filename_valid_characters(text)) { if (title_sequence_manager_get_index_for_name(text) == SIZE_MAX) { if (widgetIndex == WIDX_TITLE_EDITOR_NEW_BUTTON) { @@ -627,7 +630,7 @@ static void window_title_editor_textinput(rct_window *w, int widgetIndex, char * window_error_open(STR_ERROR_INVALID_CHARACTERS, STR_NONE); } break; - case WIDX_TITLE_EDITOR_RENAME: + case WIDX_TITLE_EDITOR_RENAME_SAVE: // if (filename_valid_characters(text)) { // if (!title_sequence_save_exists(_selectedTitleSequence, text)) { // title_sequence_rename_save(_selectedTitleSequence, w->selected_list_item, text); @@ -664,11 +667,11 @@ static void window_title_editor_invalidate(rct_window *w) window_title_editor_widgets[WIDX_TITLE_EDITOR_NEW_BUTTON].type = WWT_EMPTY; window_title_editor_widgets[WIDX_TITLE_EDITOR_DUPLICATE_BUTTON].type = WWT_EMPTY; window_title_editor_widgets[WIDX_TITLE_EDITOR_DELETE_BUTTON].type = WWT_EMPTY; - window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME_BUTTON].type = WWT_EMPTY; + window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME_SAVE_BUTTON].type = WWT_EMPTY; window_title_editor_widgets[WIDX_TITLE_EDITOR_ADD].type = WWT_EMPTY; window_title_editor_widgets[WIDX_TITLE_EDITOR_REMOVE].type = WWT_EMPTY; - window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME].type = WWT_EMPTY; + window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME_SAVE].type = WWT_EMPTY; window_title_editor_widgets[WIDX_TITLE_EDITOR_LOAD].type = WWT_EMPTY; window_title_editor_widgets[WIDX_TITLE_EDITOR_INSERT].type = WWT_EMPTY; @@ -690,13 +693,13 @@ static void window_title_editor_invalidate(rct_window *w) window_title_editor_widgets[WIDX_TITLE_EDITOR_NEW_BUTTON].type = WWT_DROPDOWN_BUTTON; window_title_editor_widgets[WIDX_TITLE_EDITOR_DUPLICATE_BUTTON].type = WWT_DROPDOWN_BUTTON; window_title_editor_widgets[WIDX_TITLE_EDITOR_DELETE_BUTTON].type = WWT_DROPDOWN_BUTTON; - window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME_BUTTON].type = WWT_DROPDOWN_BUTTON; + window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME_SAVE_BUTTON].type = WWT_DROPDOWN_BUTTON; break; case WINDOW_TITLE_EDITOR_TAB_SAVES: window_title_editor_widgets[WIDX_TITLE_EDITOR_LIST].type = WWT_SCROLL; window_title_editor_widgets[WIDX_TITLE_EDITOR_ADD].type = WWT_DROPDOWN_BUTTON; window_title_editor_widgets[WIDX_TITLE_EDITOR_REMOVE].type = WWT_DROPDOWN_BUTTON; - window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME].type = WWT_DROPDOWN_BUTTON; + window_title_editor_widgets[WIDX_TITLE_EDITOR_RENAME_SAVE].type = WWT_DROPDOWN_BUTTON; window_title_editor_widgets[WIDX_TITLE_EDITOR_LOAD].type = WWT_DROPDOWN_BUTTON; window_title_editor_widgets[WIDX_TITLE_EDITOR_PLAY].type = WWT_IMGBTN; window_title_editor_widgets[WIDX_TITLE_EDITOR_STOP].type = WWT_IMGBTN; @@ -976,3 +979,35 @@ static bool window_title_editor_check_can_edit() } return false; } + +static bool save_filename_exists(const utf8 * filename) +{ + TitleSequence * seq = _editingTitleSequence; + for (size_t i = 0; i < seq->NumSaves; i++) { + const utf8 * savePath = seq->Saves[i]; + if (_stricmp(savePath, filename) == 0) { + return true; + } + } + return false; +} + +static void window_title_editor_add_park_callback(int result, const utf8 * path) +{ + uint32 extension = get_file_extension_type(path); + if (extension != FILE_EXTENSION_SV4 && extension != FILE_EXTENSION_SV6) { + return; + } + + const utf8 * filename = path_get_filename(path); + if (save_filename_exists(filename)) { + free(_renameSavePath); + _renameSavePath = _strdup(filename); + // set_format_arg(0, intptr_t, (intptr_t)&_renameSavePath); + rct_window * w = window_find_by_class(WC_TITLE_EDITOR); + window_text_input_open(w, WIDX_TITLE_EDITOR_RENAME_SAVE, STR_FILEBROWSER_RENAME_SAVE_TITLE, STR_ERROR_EXISTING_NAME, STR_STRING, (uintptr_t)_renameSavePath, 52 - 1); + return; + } + + // title_sequence_add_save(gCurrentTitleSequence, path, newName); +}