From fd64aeba76655bcd3680a8d408e050597d34e5b0 Mon Sep 17 00:00:00 2001 From: cheapie Date: Mon, 16 Jan 2017 18:12:11 -0600 Subject: Add content --- init.lua | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 init.lua (limited to 'init.lua') diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..cd70486 --- /dev/null +++ b/init.lua @@ -0,0 +1,106 @@ +local polemount_nodebox = { + { -0.35, -0.45, 0.35, 0.35, 0.45, 0.85 } +} + + +minetest.register_node("emtraffic:controller", { + tiles = { + "emtraffic_sides.png", + "emtraffic_sides.png", + "emtraffic_sides.png", + "emtraffic_sides.png", + "emtraffic_sides.png", + "emtraffic_front.png", + }, + description = "Electromechanical Traffic Signal Controller", + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + groups = {dig_immediate=2}, + sounds = default.node_sound_metal_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("state","greena") + digiline:receptor_send(pos,digiline.rules.default,"a","RED") + digiline:receptor_send(pos,digiline.rules.default,"b","RED") + digiline:receptor_send(pos,digiline.rules.default,"c","RED") + digiline:receptor_send(pos,digiline.rules.default,"d","RED") + local timer = minetest.get_node_timer(pos) + timer:start(3) + end, + on_timer = function(pos) + minetest.sound_play("emtraffic_solenoid",{gain=0.25,max_hear_distance=8,pos=pos}) + local meta = minetest.get_meta(pos) + local timer = minetest.get_node_timer(pos) + local state = meta:get_string("state") + if state == "allreda" then + state = "greena" + minetest.after(0.5,function(pos) + digiline:receptor_send(pos,digiline.rules.default,"a","RED") + digiline:receptor_send(pos,digiline.rules.default,"b","RED") + digiline:receptor_send(pos,digiline.rules.default,"c","RED") + digiline:receptor_send(pos,digiline.rules.default,"d","RED") + timer:start(3) + end,pos) + elseif state == "yellowa" then + state = "allredb" + minetest.after(0.5,function(pos) + digiline:receptor_send(pos,digiline.rules.default,"a","YELLOW") + digiline:receptor_send(pos,digiline.rules.default,"b","RED") + digiline:receptor_send(pos,digiline.rules.default,"c","YELLOW") + digiline:receptor_send(pos,digiline.rules.default,"d","RED") + end,pos) + timer:start(3) + elseif state == "greena" then + state = "yellowa" + minetest.after(0.5,function(pos) + digiline:receptor_send(pos,digiline.rules.default,"a","GREEN") + digiline:receptor_send(pos,digiline.rules.default,"b","RED") + digiline:receptor_send(pos,digiline.rules.default,"c","GREEN") + digiline:receptor_send(pos,digiline.rules.default,"d","RED") + end,pos) + timer:start(15) + elseif state == "allredb" then + state = "greenb" + minetest.after(0.5,function(pos) + digiline:receptor_send(pos,digiline.rules.default,"a","RED") + digiline:receptor_send(pos,digiline.rules.default,"b","RED") + digiline:receptor_send(pos,digiline.rules.default,"c","RED") + digiline:receptor_send(pos,digiline.rules.default,"d","RED") + end,pos) + timer:start(3) + elseif state == "yellowb" then + state = "allreda" + minetest.after(0.5,function(pos) + digiline:receptor_send(pos,digiline.rules.default,"a","RED") + digiline:receptor_send(pos,digiline.rules.default,"b","YELLOW") + digiline:receptor_send(pos,digiline.rules.default,"c","RED") + digiline:receptor_send(pos,digiline.rules.default,"d","YELLOW") + end,pos) + timer:start(3) + elseif state == "greenb" then + state = "yellowb" + minetest.after(0.5,function(pos) + digiline:receptor_send(pos,digiline.rules.default,"a","RED") + digiline:receptor_send(pos,digiline.rules.default,"b","GREEN") + digiline:receptor_send(pos,digiline.rules.default,"c","RED") + digiline:receptor_send(pos,digiline.rules.default,"d","GREEN") + end,pos) + timer:start(10) + end + meta:set_string("state",state) + end, + node_box = { + type = "fixed", + fixed = polemount_nodebox + }, + selection_box = { + type = "fixed", + fixed = polemount_nodebox + }, + digiline = + { + receptor = {}, + effector = {}, + }, +}) -- cgit v1.2.3