extends ConfirmationDialog var base_path = "user://saves/" func _ready(): print("check for saves folder...") if DirAccess.dir_exists_absolute(base_path): print("...exists") return print("...not exist, create...") 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_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) $"../HUD/HBoxContainer/ToolSelect".populate_paste()