diff options
author | Jeija <norrepli@gmail.com> | 2012-03-29 22:11:17 +0200 |
---|---|---|
committer | Jeija <norrepli@gmail.com> | 2012-03-29 22:11:17 +0200 |
commit | ce87414f6b306f6d5a0b23de12e798183d55acd4 (patch) | |
tree | 8af056cc2994cb94bafa58e7fbbf1f08017ba4dc /mesecons | |
parent | d069275d0927fda377bd55d408c78318781bf0bf (diff) | |
download | mesecons-ce87414f6b306f6d5a0b23de12e798183d55acd4.tar mesecons-ce87414f6b306f6d5a0b23de12e798183d55acd4.tar.gz mesecons-ce87414f6b306f6d5a0b23de12e798183d55acd4.tar.bz2 mesecons-ce87414f6b306f6d5a0b23de12e798183d55acd4.tar.xz mesecons-ce87414f6b306f6d5a0b23de12e798183d55acd4.zip |
Add mesecons delayer
Diffstat (limited to 'mesecons')
-rw-r--r-- | mesecons/init.lua | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/mesecons/init.lua b/mesecons/init.lua index e2e3e92..1c8b868 100644 --- a/mesecons/init.lua +++ b/mesecons/init.lua @@ -72,6 +72,7 @@ dofile(minetest.get_modpath("mesecons").."/settings.lua") mesecon={} -- contains all functions and all global variables 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.pwr_srcs={} mesecon.pwr_srcs_off={} mesecon.rules={} @@ -140,6 +141,7 @@ function mesecon:turnon(p, x, y, z, firstcall, rules) lpos.y=p.y+y lpos.z=p.z+z + mesecon:changesignal(lpos) mesecon:activate(lpos) local node = minetest.env:get_node(lpos) @@ -170,6 +172,8 @@ function mesecon:turnoff(pos, x, y, z, firstcall, rules) local connected = 0 local checked = {} + --Send Signals to effectors: + mesecon:changesignal(lpos) if not mesecon:check_if_turnon(lpos) then mesecon:deactivate(lpos) end @@ -278,6 +282,7 @@ minetest.register_on_placenode(function(pos, newnode, placer) if newnode.name == "mesecons:mesecon_off" then mesecon:turnon(pos, 0, 0, 0) else + mesecon:changesignal(pos) mesecon:activate(pos) end end @@ -349,6 +354,15 @@ function mesecon:register_on_signal_off(action) mesecon.actions_off[i]=action end +function mesecon:register_on_signal_change(action) + local i = 1 + repeat + i=i+1 + if mesecon.actions_change[i]==nil then break end + until false + mesecon.actions_change[i]=action +end + -- INTERNAL API @@ -427,7 +441,6 @@ end function mesecon:deactivate(pos) local node = minetest.env:get_node(pos) local i = 1 - local checked={} repeat i=i+1 if mesecon.actions_off[i]~=nil then mesecon.actions_off[i](pos, node) @@ -436,6 +449,17 @@ function mesecon:deactivate(pos) until false end +function mesecon:changesignal(pos) + local node = minetest.env:get_node(pos) + local i = 1 + repeat + i=i+1 + if mesecon.actions_change[i]~=nil then mesecon.actions_change[i](pos, node) + else break + end + until false +end + mesecon:register_on_signal_on(function(pos, node) if node.name=="mesecons:meselamp_off" then |