project-villain/interface/save_load.gd

39 lines
1.0 KiB
GDScript

extends Node
func _on_save_button_pressed() -> void:
var save_nodes = get_tree().get_nodes_in_group("SaveObjects")
var save_file = FileAccess.open("user://savegame.save", FileAccess.WRITE)
for node in save_nodes:
if not node.has_method("save"):
print("no method")
continue
var node_data = node.save()
save_file.store_var(node_data)
pass # Replace with function body.
func _on_load_button_pressed():
if not FileAccess.file_exists("user://savegame.save"):
print("no save to load")
return
#var save_nodes = get_tree().get_nodes_in_group("SaveObjects")
#for i in save_nodes:
#print(i)
#i.free()
get_node("/root/Game/PlaceManager/BasePlace").free()
var save_file = FileAccess.open("user://savegame.save", FileAccess.READ)
while save_file.get_position() < save_file.get_length():
var next_load = save_file.get_var()
var load_object = load(next_load["scene_file_path"]).instantiate()
for i in next_load.keys():
load_object.set(i, next_load[i])
get_node(next_load["parent"]).add_child(load_object)