Add persistence using mod storage

master
rubenwardy 2019-11-24 20:40:42 +00:00
parent c57ab72207
commit 55fd576f27
2 changed files with 36 additions and 0 deletions

25
api.lua
View File

@ -2,6 +2,25 @@ local _groups = {}
local _action_by_name = {}
local _actions = {}
-- Load data from MetaDataRef
function classroom.load_from(meta)
local groups_str = meta:get("groups")
if not groups_str then
return
end
_groups = minetest.deserialize(groups_str)
end
-- Save data to MetaDataRef
function classroom.save_to(meta)
meta:set_string("groups", minetest.serialize(_groups))
end
function classroom.save()
-- Overridden in init.lua
end
function classroom.get_students()
local students = {}
for _, player in pairs(classroom.get_connected_players()) do
@ -66,6 +85,8 @@ function classroom.create_group(name)
_groups[name] = group
classroom.save()
return group
end
@ -79,6 +100,8 @@ function classroom.add_student_to_group(name, student)
end
group.students[#group.students + 1] = student
classroom.save()
end
end
@ -88,6 +111,8 @@ function classroom.remove_student_from_group(name, student)
for i=1, #group.students do
if group.students[i] == student then
table.remove(group.students, i)
classroom.save()
end
end
end

View File

@ -20,3 +20,14 @@ classroom.check_player_privs = minetest.check_player_privs
-- Required MT version
assert(minetest.features.formspec_version_element, "Minetest 5.1 or later is required.")
-- Mod storage for persistence
local storage = minetest.get_mod_storage()
classroom.load_from(storage)
function classroom.save()
classroom.save_to(storage)
end
minetest.register_on_shutdown(classroom.save)