classroom/api.lua

74 lines
1.4 KiB
Lua

local _groups = {}
local _action_by_name = {}
function classroom.get_students()
local students = {}
for _, player in pairs(minetest.get_connected_players()) do
students[#students + 1] = player:get_player_name()
end
return students
end
function classroom.get_group_students(name)
local group = classroom.get_group(name)
if not group then
return nil
end
local students = {}
for _, student in pairs(group.students) do
if minetest.get_player_by_name(group.students) then
students[#students + 1] = student
end
end
return students
end
function classroom.get_all_groups()
return _groups
end
function classroom.get_group(name)
return _groups[name]
end
function classroom.create_group(name)
if _groups[name] then
return nil
end
local group = {
name = name,
students = {},
}
_groups[name] = group
return group
end
function classroom.register_action(name, def)
_action_by_name[name] = def
end
function classroom.get_actions()
return _action_by_name
end
function classroom.get_students_by_selector(selector)
if selector == "*" then
return classroom.get_students()
elseif selector:sub(1, 6) == "group:" then
return classroom.get_group_students(selector:sub(7))
else
return { selector }
end
end
function classroom.run_action(aname, runner, selector, params)
local action = _action_by_name[aname]
action.func(runner, classroom.get_students_by_selector(selector))
end