JHRGB/SaveDialog.gd
2023-12-06 12:52:54 +00:00

44 lines
1.3 KiB
GDScript

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+".tscn"
var map=get_tree().root.get_node("Sim/Map")
print("Save: "+filename)
var packed_scene = PackedScene.new()
set_owner_recursive(map,map)
if packed_scene.pack(map) == OK:
var result = ResourceSaver.save(packed_scene,filename)
if result != OK:
print("Failed to save scene. Error #",result)
else:
print("Failed to pack scene.")
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)