summaryrefslogtreecommitdiff
path: root/save_file.lua
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2026-06-03 22:31:42 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2026-06-03 23:30:17 +0200
commit341af788ffb60b1066f7735c10a2ef8480ec0aa9 (patch)
treeb1acbfe48184a263098e6146922730dd7ece8808 /save_file.lua
parenta42c94e103ecf7cb365a8888c3f5afc785def284 (diff)
downloadr6p-main.tar.xz
add player selectionHEADmain
Diffstat (limited to 'save_file.lua')
-rw-r--r--save_file.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/save_file.lua b/save_file.lua
new file mode 100644
index 0000000..8dd85f2
--- /dev/null
+++ b/save_file.lua
@@ -0,0 +1,37 @@
+local util = require("util")
+
+local function save_file_write(filename, data)
+ os.rename(filename, filename..".bak")
+ local f = io.open(filename, "w")
+ if not f then
+ return false
+ end
+ f:write(util.json_enc(data))
+ f:close()
+ print("[save_file] saved to " .. filename)
+ return true
+end
+
+local function save_file_read(filename)
+ local data
+ local f = io.open(filename, "r")
+ if f then
+ data = util.json_dec(f:read("*all"))
+ f:close()
+ if not data then
+ return nil, "save_corrupted"
+ end
+ print("[save_file] loaded " .. filename)
+ else
+ data = {}
+ end
+ if not save_file_write(filename, data) then
+ return nil, "save_failed_write"
+ end
+ return data
+end
+
+return {
+ write = save_file_write,
+ read = save_file_read,
+}