Make receptor_on/off overwritable, fix a serious bug.

This commit is contained in:
Novatux 2014-01-11 20:03:37 +01:00
parent c8ef37f522
commit fe50e87da1
2 changed files with 6 additions and 6 deletions

View File

@ -38,7 +38,7 @@ function mesecon.queue:add_action(pos, func, params, time, overwritecheck, prior
end end
if (toremove ~= nil) then if (toremove ~= nil) then
table.remove(mesecon.queue.actions, i) table.remove(mesecon.queue.actions, toremove)
end end
table.insert(mesecon.queue.actions, action) table.insert(mesecon.queue.actions, action)

View File

@ -84,7 +84,7 @@ mesecon.queue:add_function("receptor_on", function (pos, rules)
local np = mesecon:addPosRule(pos, rule) local np = mesecon:addPosRule(pos, rule)
-- if area is not loaded, keep trying -- if area is not loaded, keep trying
if minetest.get_node_or_nil(np) == nil then if minetest.get_node_or_nil(np) == nil then
mesecon.queue:add_action(pos, "receptor_on", {rules}) mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
return return
end end
end end
@ -100,7 +100,7 @@ mesecon.queue:add_function("receptor_on", function (pos, rules)
end) end)
function mesecon:receptor_on(pos, rules) function mesecon:receptor_on(pos, rules)
mesecon.queue:add_action(pos, "receptor_on", {rules}) mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
end end
mesecon.queue:add_function("receptor_off", function (pos, rules) mesecon.queue:add_function("receptor_off", function (pos, rules)
@ -110,7 +110,7 @@ mesecon.queue:add_function("receptor_off", function (pos, rules)
for _, rule in ipairs(mesecon:flattenrules(rules)) do for _, rule in ipairs(mesecon:flattenrules(rules)) do
local np = mesecon:addPosRule(pos, rule) local np = mesecon:addPosRule(pos, rule)
if minetest.get_node_or_nil(np) == nil then if minetest.get_node_or_nil(np) == nil then
mesecon.queue:add_action(pos, "receptor_off", {rules}) mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
return return
end end
end end
@ -122,14 +122,14 @@ mesecon.queue:add_function("receptor_off", function (pos, rules)
if not mesecon:connected_to_receptor(np, mesecon:invertRule(rule)) then if not mesecon:connected_to_receptor(np, mesecon:invertRule(rule)) then
mesecon:turnoff(np, rulename) mesecon:turnoff(np, rulename)
else else
mesecon:changesignal(np, minetest.get_node(np), rulename, mesecon.state.off, 1) mesecon:changesignal(np, minetest.get_node(np), rulename, mesecon.state.off, 2)
end end
end end
end end
end) end)
function mesecon:receptor_off(pos, rules) function mesecon:receptor_off(pos, rules)
mesecon.queue:add_action(pos, "receptor_off", {rules}) mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
end end