summaryrefslogtreecommitdiff
path: root/mesecons
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-09-06 09:53:30 +0200
committerJeija <norrepli@gmail.com>2012-09-06 09:53:30 +0200
commit3928d54d0cb9992c1aca8d86c77b10a5a77083f8 (patch)
treedb15e79f463ddf5aecab921e5e4c315e8321782f /mesecons
parent3c90f36a75751d0d1d3550d82afe8afdd3ba9be4 (diff)
downloadmesecons-3928d54d0cb9992c1aca8d86c77b10a5a77083f8.tar
mesecons-3928d54d0cb9992c1aca8d86c77b10a5a77083f8.tar.gz
mesecons-3928d54d0cb9992c1aca8d86c77b10a5a77083f8.tar.bz2
mesecons-3928d54d0cb9992c1aca8d86c77b10a5a77083f8.tar.xz
mesecons-3928d54d0cb9992c1aca8d86c77b10a5a77083f8.zip
Implement mesecon:register_receptor(onstate, offstate, rules, get_rules) and make add_receptor_node(_off) deprecated
Diffstat (limited to 'mesecons')
-rw-r--r--mesecons/init.lua28
-rw-r--r--mesecons/internal.lua20
-rw-r--r--mesecons/legacy.lua13
3 files changed, 32 insertions, 29 deletions
diff --git a/mesecons/init.lua b/mesecons/init.lua
index 467ebf1..babfca4 100644
--- a/mesecons/init.lua
+++ b/mesecons/init.lua
@@ -20,7 +20,6 @@ mesecon.actions_on={} -- Saves registered function callbacks for mesecon on
mesecon.actions_off={} -- Saves registered function callbacks for mesecon off
mesecon.actions_change={} -- Saves registered function callbacks for mesecon change
mesecon.receptors={}
-mesecon.receptors_off={}
mesecon.effectors={}
mesecon.rules={}
mesecon.conductors={}
@@ -33,25 +32,26 @@ dofile(minetest.get_modpath("mesecons").."/internal.lua");
-- API API API API API API API API API API API API API API API API API API
-function mesecon:add_receptor_node(name, rules, get_rules) --rules table is optional; if rules depend on param2 pass (nodename, nil, function get_rules)
- if get_rules==nil and rules==nil then
- rules=mesecon:get_rules("default")
- end
- table.insert(mesecon.receptors, {name = name, rules = rules, get_rules = get_rules})
-end
-
-function mesecon:add_receptor_node_off(name, rules, get_rules)
- if get_rules==nil and rules==nil then
- rules=mesecon:get_rules("default")
+function mesecon:register_receptor(onstate, offstate, rules, get_rules)
+ if get_rules == nil and rules == nil then
+ rules = mesecon:get_rules("default")
end
- table.insert(mesecon.receptors_off, {name = name, rules = rules, get_rules = get_rules})
+ table.insert(mesecon.receptors,
+ {onstate = onstate,
+ offstate = offstate,
+ rules = rules,
+ get_rules = get_rules})
end
function mesecon:register_effector(onstate, offstate, input_rules, get_input_rules)
if get_input_rules==nil and input_rules==nil then
rules=mesecon:get_rules("default")
end
- table.insert(mesecon.effectors, {onstate = onstate, offstate = offstate, input_rules = input_rules, get_input_rules = get_input_rules})
+ table.insert(mesecon.effectors,
+ {onstate = onstate,
+ offstate = offstate,
+ input_rules = input_rules,
+ get_input_rules = get_input_rules})
end
function mesecon:receptor_on(pos, rules)
@@ -130,3 +130,5 @@ dofile(minetest.get_modpath("mesecons").."/wires.lua");
--Services like turnoff receptor on dignode and so on
dofile(minetest.get_modpath("mesecons").."/services.lua");
+--Deprecated stuff
+dofile(minetest.get_modpath("mesecons").."/legacy.lua");
diff --git a/mesecons/internal.lua b/mesecons/internal.lua
index 4270a22..71b5172 100644
--- a/mesecons/internal.lua
+++ b/mesecons/internal.lua
@@ -4,7 +4,7 @@
function mesecon:is_receptor_node(nodename)
local i = 1
for i, receptor in ipairs(mesecon.receptors) do
- if receptor.name == nodename then
+ if receptor.onstate == nodename then
return true
end
i = i + 1
@@ -14,8 +14,8 @@ end
function mesecon:is_receptor_node_off(nodename, pos, ownpos)
local i = 1
- for i, receptor in ipairs(mesecon.receptors_off) do
- if receptor.name == nodename then
+ for i, receptor in ipairs(mesecon.receptors) do
+ if receptor.offstate == nodename then
return true
end
i = i + 1
@@ -25,7 +25,7 @@ end
function mesecon:receptor_get_rules(node)
for i, receptor in ipairs(mesecon.receptors) do
- if receptor.name == node.name then
+ if receptor.onstate == node.name or receptor.offstate == node.name then
if receptor.get_rules ~= nil then
return receptor.get_rules(node.param2)
elseif mesecon.receptors[i].rules ~=nil then
@@ -35,18 +35,6 @@ function mesecon:receptor_get_rules(node)
end
end
end
-
- for i, receptor in ipairs(mesecon.receptors_off) do
- if receptor.name == node.name then
- if receptor.get_rules ~= nil then
- return receptor.get_rules(node.param2)
- elseif mesecon.receptors_off[i].rules ~=nil then
- return receptor.rules
- else
- return mesecon:get_rules("default")
- end
- end
- end
return nil
end
diff --git a/mesecons/legacy.lua b/mesecons/legacy.lua
new file mode 100644
index 0000000..4fd73dd
--- /dev/null
+++ b/mesecons/legacy.lua
@@ -0,0 +1,13 @@
+function mesecon:add_receptor_node(name, rules, get_rules)
+ if get_rules==nil and rules==nil then
+ rules=mesecon:get_rules("default")
+ end
+ table.insert(mesecon.receptors, {onstate = name, rules = rules, get_rules = get_rules})
+end
+
+function mesecon:add_receptor_node_off(name, rules, get_rules)
+ if get_rules==nil and rules==nil then
+ rules=mesecon:get_rules("default")
+ end
+ table.insert(mesecon.receptors, {offstate = name, rules = rules, get_rules = get_rules})
+end