Create persistence manager and connectors for chests and gates
This commit is contained in:
51
Persistence/persistence_manager.gd
Normal file
51
Persistence/persistence_manager.gd
Normal file
@@ -0,0 +1,51 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user