Fix portable data folder reselection
This commit is contained in:
parent
ea4d38cb49
commit
45c903bd24
3 changed files with 39 additions and 2 deletions
|
|
@ -100,7 +100,11 @@ static func migrate_active_to(
|
|||
) -> Dictionary:
|
||||
var normalized: String = destination.simplify_path().trim_suffix("/")
|
||||
if normalized == data_root.root_path:
|
||||
return {"ok": true, "message": "This data folder is already active."}
|
||||
return {
|
||||
"ok": true,
|
||||
"changed": false,
|
||||
"message": "This data folder is already active.",
|
||||
}
|
||||
if DirAccess.dir_exists_absolute(normalized) and not _directory_empty(normalized):
|
||||
if FileAccess.file_exists(normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)):
|
||||
return {
|
||||
|
|
@ -163,6 +167,7 @@ static func migrate_active_to(
|
|||
return {"ok": false, "message": "Migration copied data but did not change the pointer."}
|
||||
return {
|
||||
"ok": true,
|
||||
"changed": true,
|
||||
"message": "Data folder changed. Previous data was preserved.",
|
||||
"previous_root": old_root,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,6 +134,22 @@ func _run() -> void:
|
|||
for settings_panel: SettingsPanel in settings_panels:
|
||||
assert(settings_panel.get_node_or_null("%ExportProgression") == null)
|
||||
assert(settings_panel.get_node_or_null("%ImportProgression") == null)
|
||||
var settings_panel: SettingsPanel = settings_panels.front() as SettingsPanel
|
||||
var unchanged_root: String = data_root.root_path
|
||||
settings_panel.call("_choose_data_folder")
|
||||
var data_folder_dialog := (
|
||||
settings_panel.get("_data_folder_dialog") as FileDialog
|
||||
)
|
||||
assert(data_folder_dialog != null)
|
||||
assert(data_folder_dialog.current_dir == unchanged_root)
|
||||
data_folder_dialog.hide()
|
||||
settings_panel.call("_change_data_folder", unchanged_root + "/")
|
||||
await process_frame
|
||||
assert(data_root.root_path == unchanged_root)
|
||||
assert(
|
||||
(settings_panel.get_node("%SettingsFeedback") as Label).text
|
||||
== "this data folder is already active."
|
||||
)
|
||||
var save_slots_page := main.find_child(
|
||||
"SaveSlotsPage", true, false
|
||||
) as SaveSlotsPage
|
||||
|
|
@ -141,6 +157,15 @@ func _run() -> void:
|
|||
assert(save_slots_page.get_node("%ExportSlotButton") is Button)
|
||||
assert(save_slots_page.get_node("%ImportSlotButton") is Button)
|
||||
|
||||
var unchanged_migration: Dictionary = (
|
||||
PortableDataMigration.migrate_active_to(
|
||||
data_root, unchanged_root + "/"
|
||||
)
|
||||
)
|
||||
assert(bool(unchanged_migration.get("ok", false)))
|
||||
assert(not bool(unchanged_migration.get("changed", true)))
|
||||
assert(data_root.root_path == unchanged_root)
|
||||
|
||||
var migrated_root: String = data_root.root_path.get_base_dir().path_join(
|
||||
"progression-migrated-data"
|
||||
)
|
||||
|
|
@ -148,6 +173,7 @@ func _run() -> void:
|
|||
data_root, migrated_root
|
||||
)
|
||||
assert(bool(data_migration.get("ok", false)))
|
||||
assert(bool(data_migration.get("changed", false)))
|
||||
var migrated_save: String = migrated_root.path_join(
|
||||
"player/player_save.nfsave"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -679,7 +679,7 @@ func _choose_data_folder() -> void:
|
|||
_data_folder_dialog.dir_selected.connect(_change_data_folder)
|
||||
_interface_fonts.apply_utility_theme(_data_folder_dialog)
|
||||
add_child(_data_folder_dialog)
|
||||
_data_folder_dialog.current_dir = _data_root.root_path.get_base_dir()
|
||||
_data_folder_dialog.current_dir = _data_root.root_path
|
||||
_interface_fonts.popup_file_dialog(_data_folder_dialog)
|
||||
|
||||
|
||||
|
|
@ -691,6 +691,12 @@ func _change_data_folder(path: String) -> void:
|
|||
_show_existing_data_folder_choice(path)
|
||||
return
|
||||
if bool(result.get("ok", false)):
|
||||
if not bool(result.get("changed", false)):
|
||||
_feedback.text = str(
|
||||
result.get("message", "this data folder is already active.")
|
||||
).to_lower()
|
||||
_refresh_data_page()
|
||||
return
|
||||
_feedback.text = "data folder changed. NETfishing will close safely."
|
||||
_refresh_data_page()
|
||||
get_tree().call_deferred("quit")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue