summaryrefslogtreecommitdiff
path: root/mesecons/init.lua
diff options
context:
space:
mode:
authorJeija <jeija@mesecons.net>2014-01-19 13:57:11 +0100
committerJeija <jeija@mesecons.net>2014-01-19 13:57:11 +0100
commita632a8abc80155118708108d846f52bbc230f257 (patch)
treec5cd15411f885551a1a6330fc1166236db2847f2 /mesecons/init.lua
parenta6bd955449d16bb41d091dd2b701f358557bf038 (diff)
downloadmesecons-a632a8abc80155118708108d846f52bbc230f257.tar
mesecons-a632a8abc80155118708108d846f52bbc230f257.tar.gz
mesecons-a632a8abc80155118708108d846f52bbc230f257.tar.bz2
mesecons-a632a8abc80155118708108d846f52bbc230f257.tar.xz
mesecons-a632a8abc80155118708108d846f52bbc230f257.zip
Fix delayers and disable resuming if not using MESECONS_GLOBALSTEP
Diffstat (limited to 'mesecons/init.lua')
-rw-r--r--mesecons/init.lua26
1 files changed, 15 insertions, 11 deletions
diff --git a/mesecons/init.lua b/mesecons/init.lua
index f528dfd..b5cf68b 100644
--- a/mesecons/init.lua
+++ b/mesecons/init.lua
@@ -80,12 +80,14 @@ mesecon.queue:add_function("receptor_on", function (pos, rules)
rules = rules or mesecon.rules.default
-- if area (any of the rule targets) is not loaded, keep trying and call this again later
- for _, rule in ipairs(mesecon:flattenrules(rules)) do
- local np = mesecon:addPosRule(pos, rule)
- -- if area is not loaded, keep trying
- if minetest.get_node_or_nil(np) == nil then
- mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
- return
+ if MESECONS_GLOBALSTEP then -- trying to enable resuming with globalstep disabled would cause an endless loop
+ for _, rule in ipairs(mesecon:flattenrules(rules)) do
+ local np = mesecon:addPosRule(pos, rule)
+ -- if area is not loaded, keep trying
+ if minetest.get_node_or_nil(np) == nil then
+ mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
+ return
+ end
end
end
@@ -107,11 +109,13 @@ mesecon.queue:add_function("receptor_off", function (pos, rules)
rules = rules or mesecon.rules.default
-- if area (any of the rule targets) is not loaded, keep trying and call this again later
- for _, rule in ipairs(mesecon:flattenrules(rules)) do
- local np = mesecon:addPosRule(pos, rule)
- if minetest.get_node_or_nil(np) == nil then
- mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
- return
+ if MESECONS_GLOBALSTEP then
+ for _, rule in ipairs(mesecon:flattenrules(rules)) do
+ local np = mesecon:addPosRule(pos, rule)
+ if minetest.get_node_or_nil(np) == nil then
+ mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
+ return
+ end
end
end