extends Node var _save_dictionary: Dictionary[NodePath, Variant] = {} # Public Methods func UpdateData(node_path: NodePath, value: Variant) -> void: _save_dictionary[node_path] = value func GetData(node_path: NodePath) -> Variant: if not _save_dictionary.has(node_path): return null return _save_dictionary[node_path] func HasData(node_path: NodePath) -> bool: return _save_dictionary.has(node_path) func SaveToDisk() -> void: var save_file := FileAccess.open("user://savegame.save", FileAccess.WRITE) var json := JSON.stringify(_save_dictionary) save_file.store_line(json) func LoadFromDisk() -> void: if not FileAccess.file_exists("user://savegame.save"): return var save_file = FileAccess.open("user://savegame.save", FileAccess.READ) print("Loading save file from path: %s" % save_file.get_path_absolute()) var line := save_file.get_line() var json = JSON.new() var parse_result := json.parse(line) if parse_result != OK: print("Parsing result when loading file: [%s] in %s at line %d" % [json.get_error_message(), line, json.get_error_line()]) return var data_dict: Dictionary = json.data var node_dict: Dictionary[NodePath, Variant] for key in data_dict: var value: Variant = data_dict[key] var node_path := NodePath(key) node_dict[node_path] = value _save_dictionary = node_dict # Private Methods func _ready() -> void: LoadFromDisk()