diff options
author | cheapie <no-email-for-you@example.com> | 2015-10-20 16:15:59 -0500 |
---|---|---|
committer | cheapie <no-email-for-you@example.com> | 2015-10-20 16:15:59 -0500 |
commit | 350150cf7fb58f672a5b4fb29ff0b6e5701bd006 (patch) | |
tree | e3b90395db566e8752074d414224bdc81492244f /init.lua | |
parent | b806b65a93a801b3032000b0c9289947036b08c9 (diff) | |
download | lightcontroller-350150cf7fb58f672a5b4fb29ff0b6e5701bd006.tar lightcontroller-350150cf7fb58f672a5b4fb29ff0b6e5701bd006.tar.gz lightcontroller-350150cf7fb58f672a5b4fb29ff0b6e5701bd006.tar.bz2 lightcontroller-350150cf7fb58f672a5b4fb29ff0b6e5701bd006.tar.xz lightcontroller-350150cf7fb58f672a5b4fb29ff0b6e5701bd006.zip |
Add stuff
Diffstat (limited to 'init.lua')
-rw-r--r-- | init.lua | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..564f4db --- /dev/null +++ b/init.lua @@ -0,0 +1,89 @@ +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 + +local lc_scan = function(pos) + local objs = minetest.get_objects_inside_radius(pos, 6) + if objs then + local _,obj + for _,obj in ipairs(objs) do + if obj:is_player() then + emit_signals(pos) + return + end + end + end +end + +local lc_slave_scan = function(pos) + local objs = minetest.get_objects_inside_radius(pos, 6) + if objs then + local _,obj + for _,obj in ipairs(objs) do + if obj:is_player() then + digiline:receptor_send(pos, digiline.rules.default, "detector", "car") + return + end + end + end +end + +local on_digiline_receive = function (pos, node, channel, msg) + if channel=="detector" then emit_signals(pos) end +end + +minetest.register_node("lightcontroller:trafficnext", { + description = "TrafficNeXt SoC - Master", + tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png^streets_tl_green.png","streets_tl_bg.png^streets_tl_green.png","streets_tl_bg.png^streets_tl_green.png","streets_tl_bg.png^streets_tl_green.png"}, + groups = {cracky=3, stone=1}, + sounds = default.node_sound_stone_defaults(), + digiline = + { + receptor = {}, + effector = { action = on_digiline_receive }, + }, + on_punch = function(pos) emit_signals(pos) end +}) + +minetest.register_abm({ + nodenames = {"lightcontroller:trafficnext"}, + interval = 1.0, + chance = 1, + action = function(pos) lc_scan(pos) end +}) + +minetest.register_node("lightcontroller:trafficnext_slave", { + description = "TrafficNeXt SoC - Slave", + tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png^streets_tl_red.png","streets_tl_bg.png^streets_tl_red.png","streets_tl_bg.png^streets_tl_red.png","streets_tl_bg.png^streets_tl_red.png"}, + groups = {cracky=3, stone=1}, + sounds = default.node_sound_stone_defaults(), + digiline = + { + receptor = {}, + effector = { action = function() end}, + }, +}) + +minetest.register_abm({ + nodenames = {"lightcontroller:trafficnext_slave"}, + interval = 1.0, + chance = 1, + action = function(pos) lc_slave_scan(pos) end +}) |