diff options
author | SX <sx@minetest> | 2020-02-13 19:56:34 +0200 |
---|---|---|
committer | SX <sx@minetest> | 2020-02-13 19:56:34 +0200 |
commit | 62d6d4d5aeced03397f88acaaccabc5e2a469735 (patch) | |
tree | 8382aed75cddd2e29b61dd6a51f61326895e6096 /storage.lua | |
parent | ffedde3bd611a8f29398f9db71b198be5b23c4dc (diff) | |
download | elevator-62d6d4d5aeced03397f88acaaccabc5e2a469735.tar.gz elevator-62d6d4d5aeced03397f88acaaccabc5e2a469735.tar.bz2 elevator-62d6d4d5aeced03397f88acaaccabc5e2a469735.zip |
Refactor mod structure
Diffstat (limited to 'storage.lua')
-rw-r--r-- | storage.lua | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/storage.lua b/storage.lua new file mode 100644 index 0000000..5adbaf5 --- /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.motors and data.motors or {} +end + +local function save_elevator() + 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() |