summaryrefslogtreecommitdiff
path: root/mesecons
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2012-03-29 22:11:17 +0200
committerJeija <norrepli@gmail.com>2012-03-29 22:11:17 +0200
commitce87414f6b306f6d5a0b23de12e798183d55acd4 (patch)
tree8af056cc2994cb94bafa58e7fbbf1f08017ba4dc /mesecons
parentd069275d0927fda377bd55d408c78318781bf0bf (diff)
downloadmesecons-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.lua26
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