1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
-- This function somewhat "borrowed" from Mesecons
local light_controller_scan = function (pos)
local objs = minetest.get_objects_inside_radius(pos, mesecon.setting("detector_radius", 6))
for k, obj in pairs(objs) do
local isname = obj:get_player_name()
if (isname ~= "") then
return true
end
end
return false
end
local emit_signals = function(pos)
local meta = minetest.get_meta(pos)
if meta:get_string("locked")~="true" then
meta:set_string("locked","true")
digiline:receptor_send(pos, digiline.rules.default, "main", "RED")
minetest.after(5,function(pos)
digiline:receptor_send(pos, digiline.rules.default, "side", "GREEN")
minetest.after(10,function(pos)
digiline:receptor_send(pos, digiline.rules.default, "side", "RED")
minetest.after(5,function(pos)
digiline:receptor_send(pos, digiline.rules.default, "main", "GREEN")
minetest.after(15,function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("locked","false")
end,pos)
end,pos)
end,pos)
end,pos)
end
end
minetest.register_node("lightcontroller:trafficnext", {
description = "TrafficNeXt SoC",
tiles = {"default_stone.png"},
groups = {cracky=3, stone=1},
sounds = default.node_sound_stone_defaults(),
digiline =
{
receptor = {},
effector = {},
},
on_punch = function(pos) emit_signals(pos) end
})
|