summaryrefslogtreecommitdiff
path: root/trafficlight
diff options
context:
space:
mode:
authorcheapie <no-email-for-you@example.com>2016-01-12 15:50:18 -0600
committercheapie <no-email-for-you@example.com>2016-01-12 15:50:18 -0600
commit29e20c68eed046698bf3c450ac3a6113872f48b2 (patch)
treea4602e3c6537a083fb0c353bb12ac6c47a5a1811 /trafficlight
parentadfc0b85887a642455f445a0934fee59efe6a41d (diff)
downloadroads-29e20c68eed046698bf3c450ac3a6113872f48b2.tar
roads-29e20c68eed046698bf3c450ac3a6113872f48b2.tar.gz
roads-29e20c68eed046698bf3c450ac3a6113872f48b2.tar.bz2
roads-29e20c68eed046698bf3c450ac3a6113872f48b2.tar.xz
roads-29e20c68eed046698bf3c450ac3a6113872f48b2.zip
Add left/right turn traffic lights
Diffstat (limited to 'trafficlight')
-rw-r--r--trafficlight/init.lua420
-rw-r--r--trafficlight/textures/streets_tl_left_flashred.pngbin0 -> 1234 bytes
-rw-r--r--trafficlight/textures/streets_tl_left_green.pngbin0 -> 976 bytes
-rw-r--r--trafficlight/textures/streets_tl_left_off.pngbin0 -> 913 bytes
-rw-r--r--trafficlight/textures/streets_tl_left_red.pngbin0 -> 941 bytes
-rw-r--r--trafficlight/textures/streets_tl_left_redyellow.pngbin0 -> 1003 bytes
-rw-r--r--trafficlight/textures/streets_tl_left_warn.pngbin0 -> 1263 bytes
-rw-r--r--trafficlight/textures/streets_tl_left_yellow.pngbin0 -> 988 bytes
-rw-r--r--trafficlight/textures/streets_tl_off.pngbin884 -> 843 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_flashred.pngbin0 -> 1243 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_green.pngbin0 -> 950 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_off.pngbin0 -> 892 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_red.pngbin0 -> 941 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_redyellow.pngbin0 -> 1000 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_warn.pngbin0 -> 1240 bytes
-rw-r--r--trafficlight/textures/streets_tl_right_yellow.pngbin0 -> 976 bytes
16 files changed, 247 insertions, 173 deletions
diff --git a/trafficlight/init.lua b/trafficlight/init.lua
index a042dee..1306748 100644
--- a/trafficlight/init.lua
+++ b/trafficlight/init.lua
@@ -18,7 +18,7 @@ streets.tlBox = {
{-0.125, -0.125, 0.85, 0.125, 0.125, 0.75}, -- NodeBox11
}
-streets.tlRythm = {
+streets.tlRhythm = {
toRed = {
{name = "streets:trafficlight_top_yellow", pauseBefore = 0},
{name = "streets:trafficlight_top_red", pauseBefore = 3}
@@ -39,8 +39,62 @@ streets.tlRythm = {
}
}
+streets.tlRhythm_left = {
+ toRed = {
+ {name = "streets:trafficlight_top_left_yellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_left_red", pauseBefore = 3}
+ },
+ toGreen = {
+ {name = "streets:trafficlight_top_left_redyellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_left_green", pauseBefore = 1.5}
+ },
+ toOff = {
+ {name = "streets:trafficlight_top_left_warn", pauseBefore = 0},
+ {name = "streets:trafficlight_top_left_off", pauseBefore = 5}
+ },
+ toWarn = {
+ {name = "streets:trafficlight_top_left_warn", pauseBefore = 0}
+ },
+ toFlashRed = {
+ {name = "streets:trafficlight_top_left_flashred", pauseBefore = 0}
+ }
+}
+
+streets.tlRhythm_right = {
+ toRed = {
+ {name = "streets:trafficlight_top_right_yellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_right_red", pauseBefore = 3}
+ },
+ toGreen = {
+ {name = "streets:trafficlight_top_right_redyellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_right_green", pauseBefore = 1.5}
+ },
+ toOff = {
+ {name = "streets:trafficlight_top_right_warn", pauseBefore = 0},
+ {name = "streets:trafficlight_top_right_off", pauseBefore = 5}
+ },
+ toWarn = {
+ {name = "streets:trafficlight_top_right_warn", pauseBefore = 0}
+ },
+ toFlashRed = {
+ {name = "streets:trafficlight_top_right_flashred", pauseBefore = 0}
+ }
+}
+
streets.tlSwitch = function(def)
- if not def.pos or not def.to or not streets.tlRythm[def.to] then
+ if not def.pos or not def.to then
+ return
+ end
+ local rhythm = {}
+ local nodename = minetest.get_node(def.pos).name
+ if nodename:find("left") then
+ rhythm = streets.tlRhythm_left
+ elseif nodename:find("right") then
+ rhythm = streets.tlRhythm_right
+ else
+ rhythm = streets.tlRhythm
+ end
+ if not rhythm[def.to] then
return
end
local meta = minetest.get_meta(def.pos)
@@ -49,7 +103,7 @@ streets.tlSwitch = function(def)
return
end
-- Switch the trafficlight
- for k, v in pairs(streets.tlRythm[def.to]) do
+ for k, v in pairs(rhythm[def.to]) do
minetest.get_meta(def.pos):set_string("state", def.to:gsub("to", ""))
minetest.after(v.pauseBefore, function()
minetest.swap_node(def.pos, {name = v.name, param2 = minetest.get_node(def.pos).param2})
@@ -123,183 +177,185 @@ minetest.register_node(":streets:digiline_distributor",{
}
})
-minetest.register_node(":streets:trafficlight_top_off",{
- description = streets.S("Trafficlight"),
- 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.tlBox
- },
- tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_off.png"},
- digiline = {
- receptor = {},
- effector = {
- action = function(pos, node, channel, msg)
- streets.on_digiline_receive(pos, node, channel, msg)
+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)")),
+ 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.tlBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_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
- }
- },
- 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,
-})
+ end,
+ })
-minetest.register_node(":streets:trafficlight_top_red",{
- drop = "streets:trafficlight_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_tl_red.png"},
- node_box = {
- type = "fixed",
- fixed = streets.tlBox
- },
- 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:trafficlight_top"..i.."_red",{
+ drop = "streets:trafficlight_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_tl"..i.."_red.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ 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:trafficlight_top_yellow",{
- drop = "streets:trafficlight_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_tl_yellow.png"},
- node_box = {
- type = "fixed",
- fixed = streets.tlBox
- },
- 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:trafficlight_top"..i.."_yellow",{
+ drop = "streets:trafficlight_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_tl"..i.."_yellow.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ 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:trafficlight_top_redyellow",{
- drop = "streets:trafficlight_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_tl_redyellow.png"},
- node_box = {
- type = "fixed",
- fixed = streets.tlBox
- },
- 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:trafficlight_top"..i.."_redyellow",{
+ drop = "streets:trafficlight_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_tl"..i.."_redyellow.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ 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:trafficlight_top_green",{
- drop = "streets:trafficlight_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_tl_green.png"},
- node_box = {
- type = "fixed",
- fixed = streets.tlBox
- },
- 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:trafficlight_top"..i.."_green",{
+ drop = "streets:trafficlight_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_tl"..i.."_green.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ 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:trafficlight_top_warn",{
- drop = "streets:trafficlight_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_tl_warn.png",
- animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5},
- }},
- node_box = {
- type = "fixed",
- fixed = streets.tlBox
- },
- 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:trafficlight_top"..i.."_warn",{
+ drop = "streets:trafficlight_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_tl"..i.."_warn.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5},
+ }},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ 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:trafficlight_top_flashred",{
- drop = "streets:trafficlight_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_tl_flashred.png",
- animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5},
- }},
- node_box = {
- type = "fixed",
- fixed = streets.tlBox
- },
- 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:trafficlight_top"..i.."_flashred",{
+ drop = "streets:trafficlight_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_tl"..i.."_flashred.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5},
+ }},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ light_source = 6,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ })
+end
minetest.register_craft({
output = "streets:trafficlight_top_off",
@@ -311,6 +367,24 @@ minetest.register_craft({
})
minetest.register_craft({
+ output = "streets:trafficlight_top_left_off",
+ recipe = {
+ {"dye:red", "default:steel_ingot", "default:steel_ingot"},
+ {"dye:yellow", "default:steel_ingot", "default:steel_ingot"},
+ {"dye:green", "default:steel_ingot", "default:steel_ingot"}
+ }
+})
+
+minetest.register_craft({
+ output = "streets:trafficlight_top_right_off",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "dye:red"},
+ {"default:steel_ingot", "default:steel_ingot", "dye:yellow"},
+ {"default:steel_ingot", "default:steel_ingot", "dye:green"}
+ }
+})
+
+minetest.register_craft({
output = "streets:digiline_distributor",
recipe = {
{"", "digilines:wire_std_00000000", ""},
diff --git a/trafficlight/textures/streets_tl_left_flashred.png b/trafficlight/textures/streets_tl_left_flashred.png
new file mode 100644
index 0000000..eb1d432
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_flashred.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_left_green.png b/trafficlight/textures/streets_tl_left_green.png
new file mode 100644
index 0000000..cd0ae67
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_green.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_left_off.png b/trafficlight/textures/streets_tl_left_off.png
new file mode 100644
index 0000000..74c88de
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_off.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_left_red.png b/trafficlight/textures/streets_tl_left_red.png
new file mode 100644
index 0000000..db0694c
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_red.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_left_redyellow.png b/trafficlight/textures/streets_tl_left_redyellow.png
new file mode 100644
index 0000000..b79d1ec
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_redyellow.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_left_warn.png b/trafficlight/textures/streets_tl_left_warn.png
new file mode 100644
index 0000000..e910682
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_warn.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_left_yellow.png b/trafficlight/textures/streets_tl_left_yellow.png
new file mode 100644
index 0000000..5eeddbb
--- /dev/null
+++ b/trafficlight/textures/streets_tl_left_yellow.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_off.png b/trafficlight/textures/streets_tl_off.png
index a926d31..fb7dfaa 100644
--- a/trafficlight/textures/streets_tl_off.png
+++ b/trafficlight/textures/streets_tl_off.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_flashred.png b/trafficlight/textures/streets_tl_right_flashred.png
new file mode 100644
index 0000000..14d1e4a
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_flashred.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_green.png b/trafficlight/textures/streets_tl_right_green.png
new file mode 100644
index 0000000..f51ea81
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_green.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_off.png b/trafficlight/textures/streets_tl_right_off.png
new file mode 100644
index 0000000..7f5c3e5
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_off.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_red.png b/trafficlight/textures/streets_tl_right_red.png
new file mode 100644
index 0000000..8c25220
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_red.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_redyellow.png b/trafficlight/textures/streets_tl_right_redyellow.png
new file mode 100644
index 0000000..a1acd03
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_redyellow.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_warn.png b/trafficlight/textures/streets_tl_right_warn.png
new file mode 100644
index 0000000..9d60365
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_warn.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_right_yellow.png b/trafficlight/textures/streets_tl_right_yellow.png
new file mode 100644
index 0000000..c92724a
--- /dev/null
+++ b/trafficlight/textures/streets_tl_right_yellow.png
Binary files differ