From 29e20c68eed046698bf3c450ac3a6113872f48b2 Mon Sep 17 00:00:00 2001 From: cheapie Date: Tue, 12 Jan 2016 15:50:18 -0600 Subject: Add left/right turn traffic lights --- trafficlight/init.lua | 420 ++++++++++++--------- trafficlight/textures/streets_tl_left_flashred.png | Bin 0 -> 1234 bytes trafficlight/textures/streets_tl_left_green.png | Bin 0 -> 976 bytes trafficlight/textures/streets_tl_left_off.png | Bin 0 -> 913 bytes trafficlight/textures/streets_tl_left_red.png | Bin 0 -> 941 bytes .../textures/streets_tl_left_redyellow.png | Bin 0 -> 1003 bytes trafficlight/textures/streets_tl_left_warn.png | Bin 0 -> 1263 bytes trafficlight/textures/streets_tl_left_yellow.png | Bin 0 -> 988 bytes trafficlight/textures/streets_tl_off.png | Bin 884 -> 843 bytes .../textures/streets_tl_right_flashred.png | Bin 0 -> 1243 bytes trafficlight/textures/streets_tl_right_green.png | Bin 0 -> 950 bytes trafficlight/textures/streets_tl_right_off.png | Bin 0 -> 892 bytes trafficlight/textures/streets_tl_right_red.png | Bin 0 -> 941 bytes .../textures/streets_tl_right_redyellow.png | Bin 0 -> 1000 bytes trafficlight/textures/streets_tl_right_warn.png | Bin 0 -> 1240 bytes trafficlight/textures/streets_tl_right_yellow.png | Bin 0 -> 976 bytes 16 files changed, 247 insertions(+), 173 deletions(-) create mode 100644 trafficlight/textures/streets_tl_left_flashred.png create mode 100644 trafficlight/textures/streets_tl_left_green.png create mode 100644 trafficlight/textures/streets_tl_left_off.png create mode 100644 trafficlight/textures/streets_tl_left_red.png create mode 100644 trafficlight/textures/streets_tl_left_redyellow.png create mode 100644 trafficlight/textures/streets_tl_left_warn.png create mode 100644 trafficlight/textures/streets_tl_left_yellow.png create mode 100644 trafficlight/textures/streets_tl_right_flashred.png create mode 100644 trafficlight/textures/streets_tl_right_green.png create mode 100644 trafficlight/textures/streets_tl_right_off.png create mode 100644 trafficlight/textures/streets_tl_right_red.png create mode 100644 trafficlight/textures/streets_tl_right_redyellow.png create mode 100644 trafficlight/textures/streets_tl_right_warn.png create mode 100644 trafficlight/textures/streets_tl_right_yellow.png (limited to 'trafficlight') 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", @@ -310,6 +366,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 = { 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_flashred.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_green.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_off.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_red.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_redyellow.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_warn.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_left_yellow.png differ diff --git a/trafficlight/textures/streets_tl_off.png b/trafficlight/textures/streets_tl_off.png index a926d31..fb7dfaa 100644 Binary files a/trafficlight/textures/streets_tl_off.png and b/trafficlight/textures/streets_tl_off.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_flashred.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_green.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_off.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_red.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_redyellow.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_warn.png 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 Binary files /dev/null and b/trafficlight/textures/streets_tl_right_yellow.png differ -- cgit v1.2.3