44 lines
1.3 KiB
GDScript
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)
|