extends Node const SAVE_PATH := "user://savegame.json" func has_save() -> bool: return FileAccess.file_exists(SAVE_PATH) func start_new_game() -> void: # TODO: sobald echter Spielzustand existiert (Position, Fortschritt, ...), # hier den frischen Zustand aufbauen statt nur zu speichern. save_game() func save_game() -> void: var data := { "saved_at_unix": Time.get_unix_time_from_system(), } var file := FileAccess.open(SAVE_PATH, FileAccess.WRITE) if file == null: push_error("Speichern fehlgeschlagen: %s" % FileAccess.get_open_error()) return file.store_string(JSON.stringify(data)) file.close() func load_game() -> Dictionary: if not has_save(): push_warning("Kein Spielstand vorhanden.") return {} var file := FileAccess.open(SAVE_PATH, FileAccess.READ) var content := file.get_as_text() file.close() var parsed = JSON.parse_string(content) if typeof(parsed) != TYPE_DICTIONARY: push_error("Spielstand-Datei ist beschädigt.") return {} # TODO: geladene Werte tatsächlich auf Spieler/Welt anwenden, sobald es # etwas Sinnvolles zu laden gibt. return parsed