Move storage code out of init.lua

This commit is contained in:
Hugues Ross 2020-06-13 08:04:54 -04:00
parent 6187137158
commit 309ff6b8d4
2 changed files with 29 additions and 28 deletions

View File

@ -1,35 +1,8 @@
-- The path to this mod, for including files
local modpath = minetest.get_modpath("cartographer");
-- Storage and saving
local mod_storage = minetest.get_mod_storage();
local map_data = {
generated = minetest.deserialize(mod_storage:get_string("map")) or {},
maps = minetest.deserialize(mod_storage:get_string("maps")) or {},
next_map_id = mod_storage:get_int("next_map_id"),
};
if map_data.next_map_id == 0 then
map_data.next_map_id = 1;
end
local function save()
mod_storage:set_string("maps", minetest.serialize(map_data.maps));
mod_storage:set_int("next_map_id", map_data.next_map_id);
mod_storage:set_string("map", minetest.serialize(map_data.generated));
end
minetest.register_on_shutdown(save);
minetest.register_on_leaveplayer(save);
local function periodic_save()
save();
minetest.after(60, periodic_save);
end
minetest.after(60, periodic_save);
-- Includes
local map_data = loadfile(modpath .. "/storage.lua") ();
local chunk = loadfile(modpath .. "/chunk_api.lua") ();
local skin = loadfile(modpath .. "/skin_api.lua") ();
local gui = loadfile(modpath .. "/formspec.lua") ();

28
storage.lua Normal file
View File

@ -0,0 +1,28 @@
-- Storage and saving
local mod_storage = minetest.get_mod_storage();
local map_data = {
generated = minetest.deserialize(mod_storage:get_string("map")) or {},
maps = minetest.deserialize(mod_storage:get_string("maps")) or {},
next_map_id = mod_storage:get_int("next_map_id"),
};
if map_data.next_map_id == 0 then
map_data.next_map_id = 1;
end
local function save()
mod_storage:set_string("maps", minetest.serialize(map_data.maps));
mod_storage:set_int("next_map_id", map_data.next_map_id);
mod_storage:set_string("map", minetest.serialize(map_data.generated));
end
minetest.register_on_shutdown(save);
minetest.register_on_leaveplayer(save);
local function periodic_save()
save();
minetest.after(60, periodic_save);
end
minetest.after(60, periodic_save);
return map_data;