mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-06 11:31:49 +00:00
split internal modules
This commit is contained in:
parent
fe8e4ba7b4
commit
fcbbdd649b
10 changed files with 627 additions and 624 deletions
70
res/modules/internal/rules.lua
Normal file
70
res/modules/internal/rules.lua
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
local rules = {nexid = 1, rules = {}}
|
||||
|
||||
function rules.get_rule(name)
|
||||
local rule = rules.rules[name]
|
||||
if rule == nil then
|
||||
rule = {listeners={}}
|
||||
rules.rules[name] = rule
|
||||
end
|
||||
return rule
|
||||
end
|
||||
|
||||
function rules.get(name)
|
||||
local rule = rules.rules[name]
|
||||
if rule == nil then
|
||||
return nil
|
||||
end
|
||||
return rule.value
|
||||
end
|
||||
|
||||
function rules.set(name, value)
|
||||
local rule = rules.get_rule(name)
|
||||
rule.value = value
|
||||
for _, handler in pairs(rule.listeners) do
|
||||
handler(value)
|
||||
end
|
||||
end
|
||||
|
||||
function rules.reset(name)
|
||||
local rule = rules.get_rule(name)
|
||||
rules.set(rule.default)
|
||||
end
|
||||
|
||||
function rules.listen(name, handler)
|
||||
local rule = rules.get_rule(name)
|
||||
local id = rules.nexid
|
||||
rules.nextid = rules.nexid + 1
|
||||
rule.listeners[utf8.encode(id)] = handler
|
||||
return id
|
||||
end
|
||||
|
||||
function rules.create(name, value, handler)
|
||||
local rule = rules.get_rule(name)
|
||||
rule.default = value
|
||||
|
||||
local handlerid
|
||||
if handler ~= nil then
|
||||
handlerid = rules.listen(name, handler)
|
||||
end
|
||||
if rules.get(name) == nil then
|
||||
rules.set(name, value)
|
||||
elseif handler then
|
||||
handler(rules.get(name))
|
||||
end
|
||||
return handlerid
|
||||
end
|
||||
|
||||
function rules.unlisten(name, id)
|
||||
local rule = rules.rules[name]
|
||||
if rule == nil then
|
||||
return
|
||||
end
|
||||
rule.listeners[utf8.encode(id)] = nil
|
||||
end
|
||||
|
||||
function rules.clear()
|
||||
rules.rules = {}
|
||||
rules.nextid = 1
|
||||
end
|
||||
|
||||
return rules
|
||||
Loading…
Add table
Add a link
Reference in a new issue