diff options
author | cheapie <no-email-for-you@example.com> | 2016-01-12 15:50:18 -0600 |
---|---|---|
committer | cheapie <no-email-for-you@example.com> | 2016-01-12 15:50:18 -0600 |
commit | 29e20c68eed046698bf3c450ac3a6113872f48b2 (patch) | |
tree | a4602e3c6537a083fb0c353bb12ac6c47a5a1811 /trafficlight | |
parent | adfc0b85887a642455f445a0934fee59efe6a41d (diff) | |
download | roads-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')
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 Binary files differnew file mode 100644 index 0000000..eb1d432 --- /dev/null +++ b/trafficlight/textures/streets_tl_left_flashred.png diff --git a/trafficlight/textures/streets_tl_left_green.png b/trafficlight/textures/streets_tl_left_green.png Binary files differnew file mode 100644 index 0000000..cd0ae67 --- /dev/null +++ b/trafficlight/textures/streets_tl_left_green.png diff --git a/trafficlight/textures/streets_tl_left_off.png b/trafficlight/textures/streets_tl_left_off.png Binary files differnew file mode 100644 index 0000000..74c88de --- /dev/null +++ b/trafficlight/textures/streets_tl_left_off.png diff --git a/trafficlight/textures/streets_tl_left_red.png b/trafficlight/textures/streets_tl_left_red.png Binary files differnew file mode 100644 index 0000000..db0694c --- /dev/null +++ b/trafficlight/textures/streets_tl_left_red.png diff --git a/trafficlight/textures/streets_tl_left_redyellow.png b/trafficlight/textures/streets_tl_left_redyellow.png Binary files differnew file mode 100644 index 0000000..b79d1ec --- /dev/null +++ b/trafficlight/textures/streets_tl_left_redyellow.png diff --git a/trafficlight/textures/streets_tl_left_warn.png b/trafficlight/textures/streets_tl_left_warn.png Binary files differnew file mode 100644 index 0000000..e910682 --- /dev/null +++ b/trafficlight/textures/streets_tl_left_warn.png diff --git a/trafficlight/textures/streets_tl_left_yellow.png b/trafficlight/textures/streets_tl_left_yellow.png Binary files differnew file mode 100644 index 0000000..5eeddbb --- /dev/null +++ b/trafficlight/textures/streets_tl_left_yellow.png diff --git a/trafficlight/textures/streets_tl_off.png b/trafficlight/textures/streets_tl_off.png Binary files differindex a926d31..fb7dfaa 100644 --- a/trafficlight/textures/streets_tl_off.png +++ b/trafficlight/textures/streets_tl_off.png diff --git a/trafficlight/textures/streets_tl_right_flashred.png b/trafficlight/textures/streets_tl_right_flashred.png Binary files differnew file mode 100644 index 0000000..14d1e4a --- /dev/null +++ b/trafficlight/textures/streets_tl_right_flashred.png diff --git a/trafficlight/textures/streets_tl_right_green.png b/trafficlight/textures/streets_tl_right_green.png Binary files differnew file mode 100644 index 0000000..f51ea81 --- /dev/null +++ b/trafficlight/textures/streets_tl_right_green.png diff --git a/trafficlight/textures/streets_tl_right_off.png b/trafficlight/textures/streets_tl_right_off.png Binary files differnew file mode 100644 index 0000000..7f5c3e5 --- /dev/null +++ b/trafficlight/textures/streets_tl_right_off.png diff --git a/trafficlight/textures/streets_tl_right_red.png b/trafficlight/textures/streets_tl_right_red.png Binary files differnew file mode 100644 index 0000000..8c25220 --- /dev/null +++ b/trafficlight/textures/streets_tl_right_red.png diff --git a/trafficlight/textures/streets_tl_right_redyellow.png b/trafficlight/textures/streets_tl_right_redyellow.png Binary files differnew file mode 100644 index 0000000..a1acd03 --- /dev/null +++ b/trafficlight/textures/streets_tl_right_redyellow.png diff --git a/trafficlight/textures/streets_tl_right_warn.png b/trafficlight/textures/streets_tl_right_warn.png Binary files differnew file mode 100644 index 0000000..9d60365 --- /dev/null +++ b/trafficlight/textures/streets_tl_right_warn.png diff --git a/trafficlight/textures/streets_tl_right_yellow.png b/trafficlight/textures/streets_tl_right_yellow.png Binary files differnew file mode 100644 index 0000000..c92724a --- /dev/null +++ b/trafficlight/textures/streets_tl_right_yellow.png |