class_name SaveEngine const SAVE_FILE = "user://save.json" static func serialize(): return { "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: origin["out-game"]["value"] = ArrayTool.mapEntries(origin["out-game"]["value"], func(key, value): return [int(key), value]) origin["out-game"]["level"] = ArrayTool.mapEntries(origin["out-game"]["level"], func(key, value): return [int(key), value]) origin["out-game"]["inventory"] = ArrayTool.mapEntries(origin["out-game"]["inventory"], func(key, value): return [int(key), value]) return origin static func save(): var file = FileAccess.open(SAVE_FILE, FileAccess.ModeFlags.WRITE) if file is FileAccess: file.store_string(JsonTool.stringify(serialize())) file.close()