aboutsummaryrefslogtreecommitdiff
path: root/storage.lua
diff options
context:
space:
mode:
Diffstat (limited to 'storage.lua')
-rw-r--r--storage.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/storage.lua b/storage.lua
new file mode 100644
index 0000000..e923e5d
--- /dev/null
+++ b/storage.lua
@@ -0,0 +1,33 @@
+
+local elevator_file = minetest.get_worldpath() .. "/elevator"
+
+local str = minetest.get_mod_storage and minetest.get_mod_storage()
+
+-- Central "network" table.
+elevator.motors = {}
+
+local function load_elevator()
+ local data = nil
+ if str and ((str.contains and str:contains("data")) or (str:get_string("data") and str:get_string("data") ~= "")) then
+ data = minetest.deserialize(str:get_string("data"))
+ else
+ local file = io.open(elevator_file)
+ if file then
+ data = minetest.deserialize(file:read("*all")) or {}
+ file:close()
+ end
+ end
+ elevator.motors = (data and data.motors) and data.motors or {}
+end
+
+elevator.save_elevator = function()
+ if str then
+ str:set_string("data", minetest.serialize({motors = elevator.motors}))
+ return
+ end
+ local f = io.open(elevator_file, "w")
+ f:write(minetest.serialize({motors = elevator.motors}))
+ f:close()
+end
+
+load_elevator()