extends ConfirmationDialog var base_path = "user://saves/" func _ready(): if not DirAccess.dir_exists_absolute(base_path): DirAccess.make_dir_recursive_absolute(base_path) var dir = DirAccess.open("res://saves/") if dir: dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": if dir.current_is_dir(): print("skip directory: " + file_name) else: print("copy file: " + file_name) DirAccess.copy_absolute("res://saves/"+file_name,"user://saves/"+file_name) file_name = dir.get_next() else: print("An error occurred when trying to access the path.") func _on_about_to_popup(): pass # Replace with function body. func _on_confirmed(): var filename=base_path+$LineEdit.text print("Save: "+filename) var save_game = FileAccess.open(filename, FileAccess.WRITE) var save_nodes = get_tree().get_nodes_in_group("Persist") for node in save_nodes: # Check the node is an instanced scene so it can be instanced again during load. if node.scene_file_path.is_empty(): print("persistent node '%s' is not an instanced scene, skipped" % node.name) continue # Check the node has a save function. if !node.has_method("save_data"): print("persistent node '%s' is missing a save_data() function, skipped" % node.name) continue # Call the node's save function. var node_data = node.call("save_data") # JSON provides a static method to serialized JSON string. var json_string = JSON.stringify(node_data) # Store the save dictionary as a new line in the save file. save_game.store_line(json_string) func set_owner_recursive(node: Node, new_owner: Node): if node != new_owner: node.owner = new_owner print("chown ",node.name) for child in node.get_children(): set_owner_recursive(child, new_owner)