Add one-slot demo snapshot save and load.

This commit is contained in:
2026-08-13 13:31:33 +08:00
parent e9f5f81f46
commit 89b9173cec
7 changed files with 513 additions and 11 deletions
+41
View File
@@ -0,0 +1,41 @@
class_name DemoSnapshot
extends RefCounted
const SCHEMA := 1
const DEFAULT_PATH := "user://mana_foundry_slot1.json"
static var path_override := ""
static func slot_path() -> String:
if not path_override.is_empty():
return path_override
return DEFAULT_PATH
static func exists() -> bool:
return FileAccess.file_exists(slot_path())
static func save_payload(payload: Dictionary) -> bool:
var path := slot_path()
var file := FileAccess.open(path, FileAccess.WRITE)
if file == null:
return false
file.store_string(JSON.stringify(payload, "\t"))
return true
static func load_payload() -> Dictionary:
if not exists():
return {}
var file := FileAccess.open(slot_path(), FileAccess.READ)
if file == null:
return {}
var parsed: Variant = JSON.parse_string(file.get_as_text())
if typeof(parsed) != TYPE_DICTIONARY:
return {}
var payload: Dictionary = parsed
if int(payload.get("schema", 0)) != SCHEMA:
return {}
return payload