class_name SaveEngine const SAVE_FILE = "user://save.json" static func serialize(): return JsonTool.stringify({ "out-game": { "value": OutGameStorage.upgradableFieldsValue, "level": OutGameStorage.upgradableFieldsLevel, "inventory": OutGameStorage.inventory, }, "ui-state": { "tutorial-watched": StarterPanel.tutorialWatched, "selected-character": StarterPanel.selectedCharacter } }) static func apply(saveData: Dictionary): OutGameStorage.upgradableFieldsValue = saveData["out-game"]["value"] OutGameStorage.upgradableFieldsLevel = saveData["out-game"]["level"] OutGameStorage.inventory = saveData["out-game"]["inventory"] StarterPanel.tutorialWatched = saveData["ui-state"]["tutorial-watched"] StarterPanel.selectedCharacter = saveData["ui-state"]["selected-character"] static func load(): var origin = JsonTool.parseFromFile(SAVE_FILE) if origin is Dictionary: JsonTool.restoreEnumKey(origin, "out-game.value") JsonTool.restoreEnumKey(origin, "out-game.level") JsonTool.restoreEnumKey(origin, "out-game.inventory") return origin static func save(): var file = FileAccess.open(SAVE_FILE, FileAccess.ModeFlags.WRITE) if file is FileAccess: file.store_string(serialize()) file.close()