summaryrefslogtreecommitdiff
path: root/init.lua.save
blob: a577ef461d5fffa630465cdb463f697916990dad (plain)
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
})