74 lines
1.4 KiB
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
|