summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trafficlight/init.lua196
-rw-r--r--trafficlight/textures/streets_pl_dontwalk.pngbin0 -> 631 bytes
-rw-r--r--trafficlight/textures/streets_pl_flashingdontwalk.pngbin0 -> 798 bytes
-rw-r--r--trafficlight/textures/streets_pl_off.pngbin0 -> 571 bytes
-rw-r--r--trafficlight/textures/streets_pl_walk.pngbin0 -> 628 bytes
5 files changed, 177 insertions, 19 deletions
diff --git a/trafficlight/init.lua b/trafficlight/init.lua
index 7f472e0..baaa924 100644
--- a/trafficlight/init.lua
+++ b/trafficlight/init.lua
@@ -4,24 +4,58 @@
dofile(streets.modpath .. "/../trafficlight/old2new.lua")
streets.tlBox = {
- --[[ Thank you, rubenwardy, for your awesome NodeboxEditor! Not perfect, but still great! ]]
- {-0.1875,-0.5,0.5,0.1875,0.5,0.75}, --nodebox1
- {-0.0625,0.375,0.3125,0.0625,0.4375,0.5}, --nodebox2
- {-0.0625,0.0625,0.3125,0.0625,0.125,0.5}, --nodebox3
- {-0.0625,-0.25,0.3125,0.0625,-0.1875,0.5}, --nodebox4
- {0.0625,0.3125,0.3125,0.125,0.38,0.5}, --nodebox5
- {-0.125,0.3125,0.3125,-0.0625,0.375,0.5}, --nodebox6
- {0.0625,0,0.3125,0.125,0.0625,0.5}, --nodebox7
- {-0.125,0,0.3125,-0.0625,0.0625,0.5}, --nodebox8
- {0.0625,-0.3125,0.3125,0.125,-0.25,0.5}, --nodebox9
- {-0.125,-0.3125,0.3125,-0.0625,-0.25,0.5}, --nodebox10
- {-0.125, -0.125, 0.85, 0.125, 0.125, 0.75}, -- NodeBox11
+ {-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.125,0.3125,0.3125,-0.0625,0.375,0.5}, --Top Visor, Left
+ {-0.0625,0.375,0.3125,0.0625,0.4375,0.5}, --Top Visor, Center
+ {0.0625,0.3125,0.3125,0.125,0.38,0.5}, --Top Visor, Right
+
+ {-0.125,0,0.3125,-0.0625,0.0625,0.5}, --Middle Visor, Left
+ {-0.0625,0.0625,0.3125,0.0625,0.125,0.5}, --Middle Visor, Center
+ {0.0625,0,0.3125,0.125,0.0625,0.5}, --Middle Visor, Right
+
+ {-0.125,-0.3125,0.3125,-0.0625,-0.25,0.5}, --Bottom Visor, Left
+ {-0.0625,-0.25,0.3125,0.0625,-0.1875,0.5}, --Bottom Visor, Center
+ {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_yellow", pauseBefore = 0},
- {name = "streets:trafficlight_top_red", pauseBefore = 3}
+ {name = "streets:trafficlight_top_red", pauseBefore = 0}
+ },
+ toYellow = {
+ {name = "streets:trafficlight_top_yellow", pauseBefore = 0}
},
toGreen = {
{name = "streets:trafficlight_top_green", pauseBefore = 0}
@@ -39,8 +73,10 @@ streets.tlRhythm = {
streets.tlRhythm_left = {
toRed = {
- {name = "streets:trafficlight_top_left_yellow", pauseBefore = 0},
- {name = "streets:trafficlight_top_left_red", pauseBefore = 3}
+ {name = "streets:trafficlight_top_left_red", pauseBefore = 0}
+ },
+ toYellow = {
+ {name = "streets:trafficlight_top_left_yellow", pauseBefore = 0}
},
toGreen = {
{name = "streets:trafficlight_top_left_green", pauseBefore = 0}
@@ -58,8 +94,10 @@ streets.tlRhythm_left = {
streets.tlRhythm_right = {
toRed = {
- {name = "streets:trafficlight_top_right_yellow", pauseBefore = 0},
- {name = "streets:trafficlight_top_right_red", pauseBefore = 3}
+ {name = "streets:trafficlight_top_right_red", pauseBefore = 0}
+ },
+ toYellow = {
+ {name = "streets:trafficlight_top_right_yellow", pauseBefore = 0}
},
toGreen = {
{name = "streets:trafficlight_top_right_green", pauseBefore = 0}
@@ -81,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
@@ -111,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,
@@ -129,8 +170,18 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
elseif msg == "WARN" then
streets.tlSwitch({
pos = pos,
+ to = ped and "toFlashRed" or "toWarn"
+ })
+ elseif (not ped) and msg == "FLASHYELLOW" then
+ streets.tlSwitch({
+ pos = pos,
to = "toWarn"
})
+ elseif (not ped) and msg == "YELLOW" then
+ streets.tlSwitch({
+ pos = pos,
+ to = "toYellow"
+ })
elseif msg == "FLASHRED" then
streets.tlSwitch({
pos = pos,
@@ -171,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
new file mode 100644
index 0000000..3abc776
--- /dev/null
+++ b/trafficlight/textures/streets_pl_dontwalk.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_flashingdontwalk.png b/trafficlight/textures/streets_pl_flashingdontwalk.png
new file mode 100644
index 0000000..4fbed1e
--- /dev/null
+++ b/trafficlight/textures/streets_pl_flashingdontwalk.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_off.png b/trafficlight/textures/streets_pl_off.png
new file mode 100644
index 0000000..1b41b40
--- /dev/null
+++ b/trafficlight/textures/streets_pl_off.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_walk.png b/trafficlight/textures/streets_pl_walk.png
new file mode 100644
index 0000000..392f024
--- /dev/null
+++ b/trafficlight/textures/streets_pl_walk.png
Binary files differ