diff options
author | Jeija <jeija@mesecons.net> | 2014-01-19 13:57:11 +0100 |
---|---|---|
committer | Jeija <jeija@mesecons.net> | 2014-01-19 13:57:11 +0100 |
commit | a632a8abc80155118708108d846f52bbc230f257 (patch) | |
tree | c5cd15411f885551a1a6330fc1166236db2847f2 /mesecons/init.lua | |
parent | a6bd955449d16bb41d091dd2b701f358557bf038 (diff) | |
download | mesecons-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.lua | 26 |
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 |