diff options
author | cheapie <no-email-for-you@example.com> | 2016-05-10 15:38:02 -0500 |
---|---|---|
committer | cheapie <no-email-for-you@example.com> | 2016-05-10 15:38:02 -0500 |
commit | 7abb5392c0eff8f975f6bd093132b2b78caaf468 (patch) | |
tree | 70b95f4b3aa51d3afb94d0a3f750521a8bc8a383 /trafficlight | |
parent | 8e9477c451f73e7378ec927375f2de06c7538253 (diff) | |
download | roads-7abb5392c0eff8f975f6bd093132b2b78caaf468.tar roads-7abb5392c0eff8f975f6bd093132b2b78caaf468.tar.gz roads-7abb5392c0eff8f975f6bd093132b2b78caaf468.tar.bz2 roads-7abb5392c0eff8f975f6bd093132b2b78caaf468.tar.xz roads-7abb5392c0eff8f975f6bd093132b2b78caaf468.zip |
Add pedestrian crossing signals
Diffstat (limited to 'trafficlight')
-rw-r--r-- | trafficlight/init.lua | 147 | ||||
-rw-r--r-- | trafficlight/textures/streets_pl_dontwalk.png | bin | 0 -> 631 bytes | |||
-rw-r--r-- | trafficlight/textures/streets_pl_flashingdontwalk.png | bin | 0 -> 798 bytes | |||
-rw-r--r-- | trafficlight/textures/streets_pl_off.png | bin | 0 -> 571 bytes | |||
-rw-r--r-- | trafficlight/textures/streets_pl_walk.png | bin | 0 -> 628 bytes |
5 files changed, 143 insertions, 4 deletions
diff --git a/trafficlight/init.lua b/trafficlight/init.lua index bd1a9b9..baaa924 100644 --- a/trafficlight/init.lua +++ b/trafficlight/init.lua @@ -21,6 +21,35 @@ streets.tlBox = { {0.0625,-0.3125,0.3125,0.125,-0.25,0.5}, --Bottom Visor, Right } +streets.plBox = { + {-0.1875,-0.5,0.5,0.1875,0.5,0.75}, --Box + + {-0.125, -0.125, 0.85, 0.125, 0.125, 0.75}, -- Pole Mounting Bracket + + {-0.1875,0.0625,0.3125,-0.1375,0.4375,0.5}, --Top Visor, Left + {-0.1375,0.3875,0.3125,0.1375,0.4375,0.5}, --Top Visor, Center + {0.1875,0.0625,0.3125,0.1375,0.4375,0.5}, --Top Visor, Right + + {-0.1875,-0.0625,0.3125,-0.1375,-0.4375,0.5}, --Bottom Visor, Left + {-0.1375,-0.0625,0.3125,0.1375,-0.1125,0.5}, --Bottom Visor, Center + {0.1875,-0.0625,0.3125,0.1375,-0.4375,0.5}, --Bottom Visor, Right +} + +streets.plRhythm = { + toRed = { + {name = "streets:pedlight_top_dontwalk", pauseBefore = 0} + }, + toFlashRed = { + {name = "streets:pedlight_top_flashingdontwalk", pauseBefore = 0} + }, + toGreen = { + {name = "streets:pedlight_top_walk", pauseBefore = 0} + }, + toOff = { + {name = "streets:pedlight_top_off", pauseBefore = 0} + }, +} + streets.tlRhythm = { toRed = { {name = "streets:trafficlight_top_red", pauseBefore = 0} @@ -90,7 +119,9 @@ streets.tlSwitch = function(def) end local rhythm = {} local nodename = minetest.get_node(def.pos).name - if nodename:find("left") then + if nodename:find("pedlight") then + rhythm = streets.plRhythm + elseif nodename:find("left") then rhythm = streets.tlRhythm_left elseif nodename:find("right") then rhythm = streets.tlRhythm_right @@ -120,6 +151,7 @@ streets.on_digiline_receive = function(pos, node, channel, msg) return end -- Tl states + local ped = minetest.get_node(pos).name:find("pedlight") if msg == "OFF" then streets.tlSwitch({ pos = pos, @@ -138,14 +170,14 @@ streets.on_digiline_receive = function(pos, node, channel, msg) elseif msg == "WARN" then streets.tlSwitch({ pos = pos, - to = "toWarn" + to = ped and "toFlashRed" or "toWarn" }) - elseif msg == "FLASHYELLOW" then + elseif (not ped) and msg == "FLASHYELLOW" then streets.tlSwitch({ pos = pos, to = "toWarn" }) - elseif msg == "YELLOW" then + elseif (not ped) and msg == "YELLOW" then streets.tlSwitch({ pos = pos, to = "toYellow" @@ -190,6 +222,113 @@ minetest.register_node(":streets:digiline_distributor",{ } }) +minetest.register_node(":streets:pedlight_top_off",{ + description = streets.S("Pedestrian Light"), + drawtype="nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 1, level = 2}, + inventory_image = "streets_trafficlight_inv.png", + light_source = 11, + sunlight_propagates = true, + node_box = { + type = "fixed", + fixed = streets.plBox + }, + tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_pl_off.png"}, + digiline = { + receptor = {}, + effector = { + action = function(pos, node, channel, msg) + streets.on_digiline_receive(pos, node, channel, msg) + end + } + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", "field[channel;Channel;${channel}]") + end, + on_receive_fields = function(pos, formname, fields, sender) + if (fields.channel) then + minetest.get_meta(pos):set_string("channel", fields.channel) + minetest.get_meta(pos):set_string("state", "Off") + end + end, +}) + +minetest.register_node(":streets:pedlight_top_dontwalk",{ + drop = "streets:pedlight_top_off", + groups = {cracky = 1, not_in_creative_inventory = 1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drawtype = "nodebox", + tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_pl_dontwalk.png"}, + node_box = { + type = "fixed", + fixed = streets.plBox + }, + light_source = 6, + digiline = { + receptor = {}, + effector = { + action = function(pos, node, channel, msg) + streets.on_digiline_receive(pos, node, channel, msg) + end + } + }, +}) + +minetest.register_node(":streets:pedlight_top_walk",{ + drop = "streets:pedlight_top_off", + groups = {cracky = 1, not_in_creative_inventory = 1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drawtype = "nodebox", + tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_pl_walk.png"}, + node_box = { + type = "fixed", + fixed = streets.plBox + }, + light_source = 6, + digiline = { + receptor = {}, + effector = { + action = function(pos, node, channel, msg) + streets.on_digiline_receive(pos, node, channel, msg) + end + } + }, +}) + +minetest.register_node(":streets:pedlight_top_flashingdontwalk",{ + drop = "streets:pedlight_top_off", + groups = {cracky = 1, not_in_creative_inventory = 1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + drawtype = "nodebox", + tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{ + name="streets_pl_flashingdontwalk.png", + animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2}, + }}, + node_box = { + type = "fixed", + fixed = streets.plBox + }, + light_source = 6, + digiline = { + receptor = {}, + effector = { + action = function(pos, node, channel, msg) + streets.on_digiline_receive(pos, node, channel, msg) + end + } + }, +}) + + for _,i in pairs({"","_left","_right"}) do minetest.register_node(":streets:trafficlight_top"..i.."_off",{ description = streets.S((i == "" and "Traffic Light") or (i == "_left" and "Traffic Light (Left Turn)") or (i == "_right" and "Traffic Light (Right Turn)")), diff --git a/trafficlight/textures/streets_pl_dontwalk.png b/trafficlight/textures/streets_pl_dontwalk.png Binary files differnew file mode 100644 index 0000000..3abc776 --- /dev/null +++ b/trafficlight/textures/streets_pl_dontwalk.png diff --git a/trafficlight/textures/streets_pl_flashingdontwalk.png b/trafficlight/textures/streets_pl_flashingdontwalk.png Binary files differnew file mode 100644 index 0000000..4fbed1e --- /dev/null +++ b/trafficlight/textures/streets_pl_flashingdontwalk.png diff --git a/trafficlight/textures/streets_pl_off.png b/trafficlight/textures/streets_pl_off.png Binary files differnew file mode 100644 index 0000000..1b41b40 --- /dev/null +++ b/trafficlight/textures/streets_pl_off.png diff --git a/trafficlight/textures/streets_pl_walk.png b/trafficlight/textures/streets_pl_walk.png Binary files differnew file mode 100644 index 0000000..392f024 --- /dev/null +++ b/trafficlight/textures/streets_pl_walk.png |