Improve roadmarking system (#78)

fork-master
Thomas--S 2016-06-04 00:10:09 +02:00 committed by cheapie
parent 5a0ff5e589
commit d0134f9bb3
77 changed files with 470 additions and 541 deletions

View File

@ -42,11 +42,4 @@ end
function streets.register_road_marking(data)
streets.labels.labeltypes[data.name] = data
if data.flip_required then
local data2 = copytable(data)
data2.tex = data2.tex.."^[transformFX"
data2.name = data2.name.."_rotated"
data2.friendlyname = data2.friendlyname.." (rotated)"
streets.labels.labeltypes[data2.name] = data2
end
end

View File

@ -20,7 +20,7 @@ local function copytable(orig)
return copy
end
local register_surface_nodes = function(friendlyname,name,tiles,groups,sounds,craft)
local register_surface_nodes = function(friendlyname, name, tiles, groups, sounds, craft)
minetest.register_node(":streets:"..name,{
description = friendlyname,
tiles = tiles,
@ -94,71 +94,101 @@ local register_sign_node = function(friendlyname,name,tiles,thickness)
})
end
local register_marking_nodes = function(surface_friendlyname,surface_name,surface_tiles,surface_groups,surface_sounds,friendlyname,name,tex)
minetest.register_node(":streets:mark_"..name,{
description = "Marking Overlay: "..friendlyname,
tiles = {tex,"streets_transparent.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy = 3,attached_node = 1,oddly_breakable_by_hand = 1},
sunlight_propagates = true,
walkable = false,
inventory_image = tex,
wield_image = tex,
after_place_node = function(pos)
local node = minetest.get_node(pos)
local lower_pos = {x = pos.x, y = pos.y-1, z = pos.z}
local lower_node = minetest.get_node(lower_pos)
local lower_node_is_asphalt = minetest.registered_nodes[lower_node.name].groups.asphalt and streets.surfaces.surfacetypes[lower_node.name]
if lower_node_is_asphalt then
local lower_node_basename = streets.surfaces.surfacetypes[lower_node.name].name
lower_node.name = "streets:mark_"..(node.name:sub(14)).."_on_"..lower_node_basename
lower_node.param2 = node.param2
minetest.set_node(lower_pos,lower_node)
minetest.remove_node(pos)
end
end,
node_box = {
type = "fixed",
fixed = {-0.5,-0.5,-0.5,0.5,-0.499,0.5}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}
}
})
local tiles = {}
tiles[1] = surface_tiles[1]
tiles[2] = surface_tiles[2] or surface_tiles[1] --If less than 6 textures are used, this'll "expand" them to 6
tiles[3] = surface_tiles[3] or surface_tiles[1]
tiles[4] = surface_tiles[4] or surface_tiles[1]
tiles[5] = surface_tiles[5] or surface_tiles[1]
tiles[6] = surface_tiles[6] or surface_tiles[1]
tiles[1] = tiles[1].."^"..tex
tiles[5] = tiles[5].."^"..tex.."^[transformR180"
tiles[6] = tiles[6].."^"..tex
local groups = copytable(surface_groups)
groups.not_in_creative_inventory = 1
minetest.register_node(":streets:mark_"..name.."_on_"..surface_name,{
description = surface_friendlyname.." With Marking: "..friendlyname,
groups = groups,
sounds = surface_sounds,
tiles = tiles,
paramtype2 = "facedir"
})
minetest.register_craft({
output = "streets:mark_"..name.."_on_"..surface_name,
type = "shapeless",
recipe = {"streets:"..surface_name,"streets:mark_"..name}
})
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairsplus") then
stairsplus:register_all("streets", name.."_on_"..surface_name, "streets:mark_"..name.."_on_"..surface_name, {
description = surface_friendlyname.." with Marking: "..friendlyname,
tiles = tiles,
groups = surface_groups,
sounds = surface_sounds
local register_marking_nodes = function(surface_friendlyname, surface_name, surface_tiles, surface_groups, surface_sounds, register_stairs, friendlyname, name, tex, r)
local rotation_friendly = ""
if r == "r90" then
rotation_friendly = " (R90)"
tex = tex .. "^[transformR90"
elseif r == "r180" then
rotation_friendly = " (R180)"
tex = tex .. "^[transformR180"
elseif r == "r270" then
rotation_friendly = " (R270)"
tex = tex .. "^[transformR270"
end
if r ~= "" then
r = "_" .. r
end
for color = 1,2 do
local colorname
if color == 1 then
colorname = "White"
elseif color == 2 then
colorname = "Yellow"
tex = "" .. tex .. "^[colorize:#ecb100"
end
minetest.register_node(":streets:mark_" .. name:gsub("{color}", colorname:lower()) .. r, {
description = "Marking Overlay: " .. friendlyname .. rotation_friendly .. " " .. colorname,
tiles = {tex, "streets_transparent.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy = 3, attached_node = 1, oddly_breakable_by_hand = 1, not_in_creative_inventory = 1},
sunlight_propagates = true,
walkable = false,
inventory_image = tex,
wield_image = tex,
after_place_node = function(pos)
local node = minetest.get_node(pos)
local lower_pos = {x = pos.x, y = pos.y-1, z = pos.z}
local lower_node = minetest.get_node(lower_pos)
local lower_node_is_asphalt = minetest.registered_nodes[lower_node.name].groups.asphalt and streets.surfaces.surfacetypes[lower_node.name]
if lower_node_is_asphalt then
local lower_node_basename = streets.surfaces.surfacetypes[lower_node.name].name
lower_node.name = "streets:mark_" .. (node.name:sub(14)) .. "_on_" .. lower_node_basename
lower_node.param2 = node.param2
minetest.set_node(lower_pos, lower_node)
minetest.remove_node(pos)
end
end,
node_box = {
type = "fixed",
fixed = {-0.5,-0.5,-0.5,0.5,-0.499,0.5}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}
}
})
local tiles = {}
tiles[1] = surface_tiles[1]
tiles[2] = surface_tiles[2] or surface_tiles[1] --If less than 6 textures are used, this'll "expand" them to 6
tiles[3] = surface_tiles[3] or surface_tiles[1]
tiles[4] = surface_tiles[4] or surface_tiles[1]
tiles[5] = surface_tiles[5] or surface_tiles[1]
tiles[6] = surface_tiles[6] or surface_tiles[1]
tiles[1] = tiles[1] .. "^(" .. tex .. ")"
tiles[5] = tiles[5] .. "^(" .. tex .. ")^[transformR180"
tiles[6] = tiles[6] .. "^(" .. tex .. ")"
local groups = copytable(surface_groups)
groups.not_in_creative_inventory = 1
minetest.register_node(":streets:mark_" .. name:gsub("{color}", colorname:lower()) .. r .. "_on_" .. surface_name, {
description = surface_friendlyname .. " with Marking: " .. friendlyname .. rotation_friendly .. " " .. colorname,
groups = groups,
sounds = surface_sounds,
tiles = tiles,
paramtype2 = "facedir"
})
minetest.register_craft({
output = "streets:mark_" .. name:gsub("{color}", colorname:lower()) .. r .. "_on_" .. surface_name,
type = "shapeless",
recipe = {"streets:" .. surface_name, "streets:mark_" .. name:gsub("{color}", colorname:lower())}
})
if register_stairs and (minetest.get_modpath("moreblocks") or minetest.get_modpath("stairsplus")) then
stairsplus:register_all(
"streets",
name:gsub("{color}", colorname:lower()) .. r .. "_on_" .. surface_name,
"streets:mark_" .. name:gsub("{color}", colorname:lower()) .. "_on_" .. surface_name, {
description = surface_friendlyname .. " with Marking: " .. friendlyname .. rotation_friendly .. " " .. colorname,
tiles = tiles,
groups = surface_groups,
sounds = surface_sounds
})
end
end
end
@ -167,7 +197,18 @@ if streets.surfaces.surfacetypes then
register_surface_nodes(v.friendlyname,v.name,v.tiles,v.groups,v.sounds,v.craft)
if streets.labels.labeltypes then
for _,w in pairs(streets.labels.labeltypes) do
register_marking_nodes(v.friendlyname,v.name,v.tiles,v.groups,v.sounds,w.friendlyname,w.name,w.tex)
register_marking_nodes(v.friendlyname, v.name, v.tiles, v.groups, v.sounds, v.register_stairs, w.friendlyname, w.name, w.tex, "")
if w.rotation then
if w.rotation.r90 then
register_marking_nodes(v.friendlyname, v.name, v.tiles, v.groups, v.sounds, v.register_stairs, w.friendlyname, w.name, w.tex, "r90")
end
if w.rotation.r180 then
register_marking_nodes(v.friendlyname, v.name, v.tiles, v.groups, v.sounds, v.register_stairs, w.friendlyname, w.name, w.tex, "r180")
end
if w.rotation.r270 then
register_marking_nodes(v.friendlyname, v.name, v.tiles, v.groups, v.sounds, v.register_stairs, w.friendlyname, w.name, w.tex, "r270")
end
end
end
end
end

View File

@ -11,28 +11,35 @@ function streets.workshop.start(pos)
if node.name ~= "streets:asphalt_workshop" then
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local template = inv:get_stack("template",1):get_name()
local surface = inv:get_stack("surface",1):get_name()
local yellow_needed = inv:get_stack("yellow_needed",1):get_count()
local white_needed = inv:get_stack("white_needed",1):get_count()
local yellow_ok = inv:get_stack("yellow_dye",1):get_count() >= yellow_needed
local white_ok = inv:get_stack("white_dye",1):get_count() >= white_needed
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local template = inv:get_stack("template", 1):get_name()
local surface = inv:get_stack("surface", 1):get_name()
local yellow_needed = inv:get_stack("yellow_needed", 1):get_count()
local white_needed = inv:get_stack("white_needed", 1):get_count()
local yellow_ok = inv:get_stack("yellow_dye", 1):get_count() >= yellow_needed
local white_ok = inv:get_stack("white_dye", 1):get_count() >= white_needed
if not (yellow_ok and white_ok and surface and surface ~= "" and template and template ~= "") then
return
end
local surface_suffix = ""
if streets.surfaces.surfacetypes[surface] then surface_suffix = "_on_"..streets.surfaces.surfacetypes[surface].name end
local outname = template..surface_suffix
if not inv:room_for_item("output",{name = outname,count = 1}) then
if streets.surfaces.surfacetypes[surface] then
surface_suffix = "_on_" .. streets.surfaces.surfacetypes[surface].name
end
local outname = template .. surface_suffix
if not inv:room_for_item("output", {name = outname, count = 1}) then
return
end
meta:set_string("working_on",outname)
meta:set_int("progress",0)
inv:remove_item("yellow_dye",{name = "dye:yellow",count = yellow_needed})
inv:remove_item("white_dye",{name = "dye:white",count = white_needed})
inv:remove_item("surface",{name = inv:get_stack("surface",1):get_name(),count = 1})
meta:set_string("working_on", outname)
meta:set_int("progress", 0)
inv:remove_item("yellow_dye", {name = "dye:yellow", count = yellow_needed})
inv:remove_item("white_dye" , {name = "dye:white" , count = white_needed })
inv:remove_item("surface", {name = inv:get_stack("surface", 1):get_name(), count = 1})
streets.workshop.step(pos)
end
@ -49,12 +56,12 @@ function streets.workshop.step(pos)
local progress = meta:get_int("progress")
progress = progress + 1
if progress < 10 then
minetest.after(0.2,streets.workshop.step,pos)
minetest.after(0.2, streets.workshop.step, pos)
else
meta:set_int("progress",0)
progress = 0
inv:add_item("output",meta:get_string("working_on"))
meta:set_string("working_on","")
meta:set_string("working_on", "")
streets.workshop.start(pos)
end
meta:set_int("progress",progress)
@ -68,9 +75,9 @@ function streets.workshop.update_formspec(pos)
end
local meta = minetest.get_meta(pos)
local fs = "size[9,9;]"
fs = fs.."tabheader[0,0;tabs;"
fs = fs .. "tabheader[0,0;tabs;"
for k,v in pairs(streets.labels.sections) do
fs = fs..minetest.formspec_escape(v.friendlyname)..","
fs = fs..minetest.formspec_escape(v.friendlyname) .. ","
end
fs = fs:sub(1,-2) --Strip trailing comma
fs = fs .. ";" .. meta:get_int("section") .. ";false;true]"
@ -83,18 +90,23 @@ function streets.workshop.update_formspec(pos)
fs = fs .. "label[0,2.75;Dye Required]"
fs = fs .. "list[context;white_needed;0,3.25;1,1]"
fs = fs .. "list[context;yellow_needed;1,3.25;1,1]"
fs = fs .. "list[context;list;2,0;4,4]"
fs = fs .. "label[6.5,0.5;Surface]"
fs = fs .. "label[7.5,0.5;Template]"
fs = fs .. "list[context;surface;6.5,1;1,1]"
fs = fs .. "list[context;template;7.5,1;1,1]"
fs = fs .. "image[7,2;1,1;gui_furnace_arrow_bg.png^[lowpart:" .. meta:get_int("progress")*10 .. ":gui_furnace_arrow_fg.png^[transformR180]"
fs = fs .. "list[context;output;7,3;1,1]"
fs = fs .. "label[2,-0.25;Rotation]"
fs = fs .. "button[2,0.25;1,1;r0;R0]"
fs = fs .. "button[2,1.25;1,1;r90;R90]"
fs = fs .. "button[2,2.25;1,1;r180;R180]"
fs = fs .. "button[2,3.25;1,1;r270;R270]"
fs = fs .. "list[context;list;3,0;4,4]"
fs = fs .. "label[7,0.5;Surface]"
fs = fs .. "label[8,0.5;Template]"
fs = fs .. "list[context;surface;7,1;1,1]"
fs = fs .. "list[context;template;8,1;1,1]"
fs = fs .. "image[7.5,2;1,1;gui_furnace_arrow_bg.png^[lowpart:" .. meta:get_int("progress")*10 .. ":gui_furnace_arrow_fg.png^[transformR180]"
fs = fs .. "list[context;output;7.5,3;1,1]"
fs = fs .. "list[current_player;main;0.5,5;8,4]"
if minetest.setting_getbool("creative_mode") then
fs = fs .."label[2,4;CREATIVE MODE: Taking templates is enabled]"
end
meta:set_string("formspec",fs)
meta:set_string("formspec", fs)
end
local function update_inventory(pos)
@ -103,49 +115,77 @@ local function update_inventory(pos)
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("white_dye",1)
inv:set_size("yellow_dye",1)
inv:set_size("white_needed",0)
inv:set_size("yellow_needed",0)
inv:set_size("list",0)
inv:set_size("white_needed",1)
inv:set_size("yellow_needed",1)
inv:set_size("list",16) -- 4x4
inv:set_size("surface",1)
inv:set_size("template",1)
inv:set_size("output",1)
local inv = meta:get_inventory()
inv:set_size("white_dye" , 1)
inv:set_size("yellow_dye" , 1)
inv:set_size("white_needed" , 0)
inv:set_size("yellow_needed", 0)
inv:set_size("list" , 0)
inv:set_size("white_needed" , 1)
inv:set_size("yellow_needed", 1)
inv:set_size("list" , 16) -- 4x4
inv:set_size("surface" , 1)
inv:set_size("template" , 1)
inv:set_size("output" , 1)
local color = meta:get_string("color")
local section = meta:get_int("section")
local rotation = meta:get_string("rotation")
local sectionname = streets.labels.sections[section].name
for k,v in pairs(streets.labels.labeltypes) do
if v.category.color == color and v.category.section == sectionname then
inv:add_item("list","streets:mark_"..v.name)
if v.section == sectionname then
if v.rotation then
if v.rotation.r90 and rotation == "r90" then
inv:add_item("list","streets:mark_" .. v.name:gsub("{color}", color:lower()) .. "_r90" )
elseif v.rotation.r180 and rotation == "r180" then
inv:add_item("list","streets:mark_" .. v.name:gsub("{color}", color:lower()) .. "_r180")
elseif v.rotation.r270 and rotation == "r270" then
inv:add_item("list","streets:mark_" .. v.name:gsub("{color}", color:lower()) .. "_r270")
end
end
if rotation == "r0" then
inv:add_item("list","streets:mark_" .. v.name:gsub("{color}", color:lower()) )
end
end
end
local templatestack = inv:get_stack("template",1)
local templatestack = inv:get_stack("template", 1)
if templatestack and templatestack:to_string() ~= "" then
local selectedmarking = templatestack:to_table().name:sub(14)
local dyesneeded = streets.labels.labeltypes[selectedmarking].dye_needed
if dyesneeded.white then
inv:add_item("white_needed",{name = "dye:white",count = dyesneeded.white})
if selectedmarking:find("white") then
markingcolor = "white"
elseif selectedmarking:find("yellow") then
markingcolor = "yellow"
end
if dyesneeded.yellow then
inv:add_item("yellow_needed",{name = "dye:yellow",count = dyesneeded.yellow})
selectedmarking = selectedmarking:gsub("white" , "{color}")
selectedmarking = selectedmarking:gsub("yellow", "{color}")
local dyesneeded = streets.labels.labeltypes[selectedmarking].dye_needed
if markingcolor == "white" then
inv:add_item("white_needed", {name = "dye:white", count = dyesneeded})
end
if markingcolor == "yellow" then
inv:add_item("yellow_needed", {name = "dye:yellow", count = dyesneeded})
end
end
streets.workshop.update_formspec(pos)
streets.workshop.start(pos)
end
local function on_receive_fields(pos,formname,fields,sender)
local function on_receive_fields(pos, formname, fields, sender)
local meta = minetest.get_meta(pos)
if fields.tabs then
meta:set_int("section",fields.tabs)
meta:set_int("section", fields.tabs)
elseif fields.color_white then
meta:set_string("color","white")
meta:set_string("color", "white")
elseif fields.color_yellow then
meta:set_string("color","yellow")
meta:set_string("color", "yellow")
elseif fields.r0 then
meta:set_string("rotation", "r0")
elseif fields.r90 then
meta:set_string("rotation", "r90")
elseif fields.r180 then
meta:set_string("rotation", "r180")
elseif fields.r270 then
meta:set_string("rotation", "r270")
end
update_inventory(pos)
end

View File

@ -15,490 +15,341 @@ streets.labels.sections = {
{name="other",friendlyname="Other"}
}
-- CENTER LINES
-- Normal Lines
streets.register_road_marking({
name = "dashed_white_center_line",
friendlyname = "Dashed White Center Line",
tex = "streets_line_dashed.png",
flip_required = false,
category = {color = "white", section = "centerlines"},
dye_needed = {white = 1},
name = "dashed_{color}_center_line",
friendlyname = "Dashed Center Line",
tex = "streets_dashed_center_line.png",
section = "centerlines",
dye_needed = 1,
rotation = { r90 = 1},
})
streets.register_road_marking({
name = "solid_white_center_line",
friendlyname = "Solid White Center Line",
tex = "streets_line_solid.png",
flip_required = false,
category = {color = "white", section = "centerlines"},
dye_needed = {white = 2},
name = "solid_{color}_center_line",
friendlyname = "Solid Center Line",
tex = "streets_solid_center_line.png",
section = "centerlines",
dye_needed = 2,
rotation = { r90 = 1},
})
-- Wide Lines
streets.register_road_marking({
name = "dashed_{color}_center_line_wide",
friendlyname = "Dashed Center Line Wide",
tex = "streets_dashed_center_line_wide.png",
section = "centerlines",
dye_needed = 2,
rotation = { r90 = 1},
})
streets.register_road_marking({
name = "solid_white_side_line",
friendlyname = "Solid White Side Line",
tex = "streets_line_side_slim.png",
flip_required = true,
category = {color = "white", section = "sidelines"},
dye_needed = {white = 2},
name = "solid_{color}_center_line_wide",
friendlyname = "Solid Center Line Wide",
tex = "streets_solid_center_line_wide.png",
section = "centerlines",
dye_needed = 4,
rotation = { r90 = 1},
})
-- Double Lines
streets.register_road_marking({
name = "double_dashed_{color}_center_line",
friendlyname = "Double Dashed Center Line",
tex = "streets_double_dashed_center_line.png",
section = "centerlines",
dye_needed = 2,
rotation = { r90 = 1},
})
streets.register_road_marking({
name = "solid_white_side_line_wide",
friendlyname = "Solid White Side Line (Wide)",
tex = "streets_line_side_thick.png",
flip_required = true,
category = {color = "white", section = "sidelines"},
dye_needed = {white = 3},
name = "double_solid_{color}_center_line",
friendlyname = "Double Solid Center Line",
tex = "streets_double_solid_center_line.png",
section = "centerlines",
dye_needed = 4,
rotation = { r90 = 1},
})
streets.register_road_marking({
name = "dashed_white_side_line",
friendlyname = "Dashed White Side Line",
tex = "streets_line_side_dashed_slim.png",
flip_required = true,
category = {color = "white", section = "sidelines"},
dye_needed = {white = 1},
name = "mixed_{color}_center_line",
friendlyname = "Solid/Dashed Center Line",
tex = "streets_mixed_center_line.png",
section = "centerlines",
dye_needed = 3,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
--CENTER LINE CORNERS
--Normal Lines
streets.register_road_marking({
name = "solid_{color}_center_line_corner",
friendlyname = "Solid Center Line Corner",
tex = "streets_solid_center_line_corner.png",
section = "centerlinecorners",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "dashed_white_side_line_wide",
friendlyname = "Dashed White Side Line (Wide)",
tex = "streets_line_side_dashed_thick.png",
flip_required = true,
category = {color = "white", section = "sidelines"},
dye_needed = {white = 2},
name = "solid_{color}_center_line_tjunction",
friendlyname = "Solid Center Line T-Junction",
tex = "streets_solid_center_line_tjunction.png",
section = "centerlinecorners",
dye_needed = 3,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "solid_white_side_line_corner",
friendlyname = "Solid White Side Line Corner",
tex = "streets_line_edge_slim.png",
flip_required = true,
category = {color = "white", section = "sidelines"},
dye_needed = {white = 3},
name = "solid_{color}_center_line_crossing",
friendlyname = "Solid Center Line Crossing",
tex = "streets_solid_center_line_crossing.png",
section = "centerlinecorners",
dye_needed = 4,
})
--Wide Lines
streets.register_road_marking({
name = "solid_{color}_center_line_wide_corner",
friendlyname = "Solid Center Line Wide Corner",
tex = "streets_solid_center_line_wide_corner.png",
section = "centerlinecorners",
dye_needed = 4,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "solid_white_side_line_wide_corner",
friendlyname = "Solid White Side Line (Wide) Corner",
tex = "streets_line_edge_thick.png",
flip_required = true,
category = {color = "white", section = "sidelines"},
dye_needed = {white = 4},
name = "solid_{color}_center_line_wide_tjunction",
friendlyname = "Solid Center Line Wide T-Junction",
tex = "streets_solid_center_line_wide_tjunction.png",
section = "centerlinecorners",
dye_needed = 6,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "double_solid_white_center_line",
friendlyname = "Double Solid White Center Line",
tex = "streets_line_solid_double.png",
flip_required = false,
category = {color = "white", section = "centerlines"},
dye_needed = {white = 4},
name = "solid_{color}_center_line_wide_crossing",
friendlyname = "Solid Center Line Wide Crossing",
tex = "streets_solid_center_line_wide_crossing.png",
section = "centerlinecorners",
dye_needed = 8,
})
--Double Lines
streets.register_road_marking({
name = "double_solid_{color}_center_line_corner",
friendlyname = "Double Solid Center Line Corner",
tex = "streets_double_solid_center_line_corner.png",
section = "centerlinecorners",
dye_needed = 4,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "double_dashed_white_center_line",
friendlyname = "Double Dashed White Center Line",
tex = "streets_line_dashed_double.png",
flip_required = false,
category = {color = "white", section = "centerlines"},
dye_needed = {white = 2},
name = "double_solid_{color}_center_line_tjunction",
friendlyname = "Double Solid Center Line T-Junction",
tex = "streets_double_solid_center_line_tjunction.png",
section = "centerlinecorners",
dye_needed = 6,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "mixed_white_center_line",
friendlyname = "Solid/Dashed White Center Line",
tex = "streets_line_mixed_double.png",
flip_required = true,
category = {color = "white", section = "centerlines"},
dye_needed = {white = 3},
name = "double_solid_{color}_center_line_crossing",
friendlyname = "Double Solid Center Line Crossing",
tex = "streets_double_solid_center_line_crossing.png",
section = "centerlinecorners",
dye_needed = 8,
})
--SIDE LINES
--Normal Lines
streets.register_road_marking({
name = "solid_{color}_side_line",
friendlyname = "Solid Side Line",
tex = "streets_solid_side_line.png",
section = "sidelines",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "solid_white_stripe",
friendlyname = "Solid White Stripe",
tex = "streets_crosswalk.png",
flip_required = false,
category = {color = "white", section = "other"},
dye_needed = {white = 4},
name = "solid_{color}_side_line_corner",
friendlyname = "Solid Side Line Corner",
tex = "streets_solid_side_line_corner.png",
section = "sidelines",
dye_needed = 4,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_straight",
friendlyname = "White Arrow (straight)",
name = "dashed_{color}_side_line",
friendlyname = "Dashed Side Line",
tex = "streets_dashed_side_line.png",
section = "sidelines",
dye_needed = 1,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
--Wide Lines
streets.register_road_marking({
name = "solid_{color}_side_line_wide",
friendlyname = "Solid Side Line Wide",
tex = "streets_solid_side_line_wide.png",
section = "sidelines",
dye_needed = 4,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "solid_{color}_side_line_wide_corner",
friendlyname = "Solid Side Line Wide Corner",
tex = "streets_solid_side_line_wide_corner.png",
section = "sidelines",
dye_needed = 8,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "dashed_{color}_side_line_wide",
friendlyname = "Dashed Side Line Wide",
tex = "streets_dashed_side_line_wide.png",
section = "sidelines",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
--ARROWS
streets.register_road_marking({
name = "{color}_arrow_straight",
friendlyname = "Arrow Straight",
tex = "streets_arrow_straight.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 2},
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_left",
friendlyname = "White Arrow (left)",
tex = "streets_arrow_left.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 2},
name = "{color}_arrow_left",
friendlyname = "Arrow Left",
tex = "streets_arrow_right.png^[transformFX",
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_right",
friendlyname = "White Arrow (right)",
name = "{color}_arrow_right",
friendlyname = "Arrow Right",
tex = "streets_arrow_right.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 2},
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_left_straight",
friendlyname = "White Arrow (left+straight)",
tex = "streets_arrow_straightleft.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 3},
name = "{color}_arrow_left_straight",
friendlyname = "Arrow Left And Straight",
tex = "streets_arrow_right_straight.png^[transformFX",
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_straight_right",
friendlyname = "White Arrow (straight+right)",
tex = "streets_arrow_straightright.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 3},
name = "{color}_arrow_right_straight",
friendlyname = "Arrow Right And Straight",
tex = "streets_arrow_right_straight.png",
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_left_straight_right",
friendlyname = "White Arrow (left+straight+right)",
tex = "streets_arrow_straightleftright.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 4},
name = "{color}_arrow_left_right_straight",
friendlyname = "Arrow Left, Right And Straight",
tex = "streets_arrow_right_straight.png^[transformFX^streets_arrow_right_straight.png",
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "white_arrow_left_right",
friendlyname = "White Arrow (left+right)",
tex = "streets_arrow_leftright.png",
flip_required = false,
category = {color = "white", section = "arrows"},
dye_needed = {white = 3},
name = "{color}_arrow_left_right",
friendlyname = "Arrow Left And Right",
tex = "streets_arrow_left_right.png",
section = "arrows",
dye_needed = 2,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
--SYMBOLS
streets.register_road_marking({
name = "white_parking",
friendlyname = "White Parking",
name = "{color}_parking",
friendlyname = "Parking",
tex = "streets_parking.png",
flip_required = false,
category = {color = "white", section = "symbols"},
dye_needed = {white = 3},
section = "symbols",
dye_needed = 3,
rotation = { r90 = 1, r180 = 1, r270 = 1},
})
streets.register_road_marking({
name = "solid_white_diagonal_line",
friendlyname = "Solid White Diagonal Line",
tex = "streets_zigzag.png",
flip_required = true,
category = {color = "white", section = "other"},
dye_needed = {white = 2},
})
streets.register_road_marking({
name = "double_solid_white_diagonal_line",
friendlyname = "Double Solid White Diagonal Line",
tex = "streets_forbidden.png",
flip_required = true,
category = {color = "white", section = "other"},
dye_needed = {white = 4},
})
streets.register_road_marking({
name = "white_x",
friendlyname = "White X",
name = "{color}_cross",
friendlyname = "Cross",
tex = "streets_cross.png",
flip_required = false,
category = {color = "white", section = "symbols"},
dye_needed = {white = 4},
section = "symbols",
dye_needed = 4,
})
--OTHER
streets.register_road_marking({
name = "solid_{color}_stripe",
friendlyname = "Solid Stripe",
tex = "streets_solid_stripe.png",
section = "other",
dye_needed = 4,
rotation = { r90 = 1},
})
streets.register_road_marking({
name = "dashed_yellow_center_line",
friendlyname = "Dashed Yellow Center Line",
tex = "streets_line_dashed_yellow.png",
flip_required = false,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 1},
name = "solid_{color}_diagonal_line",
friendlyname = "Solid Diagonal Line",
tex = "streets_solid_diagonal_line.png",
section = "other",
dye_needed = 2,
rotation = { r90 = 1},
})
streets.register_road_marking({
name = "solid_yellow_center_line",
friendlyname = "Solid Yellow Center Line",
tex = "streets_line_solid_yellow.png",
flip_required = false,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "solid_yellow_side_line",
friendlyname = "Solid Yellow Side Line",
tex = "streets_line_side_slim_yellow.png",
flip_required = true,
category = {color = "yellow", section = "sidelines"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "solid_yellow_side_line_wide",
friendlyname = "Solid Yellow Side Line (Wide)",
tex = "streets_line_side_thick_yellow.png",
flip_required = true,
category = {color = "yellow", section = "sidelines"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "dashed_yellow_side_line",
friendlyname = "Dashed Yellow Side Line",
tex = "streets_line_side_dashed_slim_yellow.png",
flip_required = true,
category = {color = "yellow", section = "sidelines"},
dye_needed = {yellow = 1},
})
streets.register_road_marking({
name = "dashed_yellow_side_line_wide",
friendlyname = "Dashed Yellow Side Line (Wide)",
tex = "streets_line_side_dashed_thick_yellow.png",
flip_required = true,
category = {color = "yellow", section = "sidelines"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "solid_yellow_side_line_corner",
friendlyname = "Solid Yellow Side Line Corner",
tex = "streets_line_edge_slim_yellow.png",
flip_required = true,
category = {color = "yellow", section = "sidelines"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "solid_yellow_side_line_wide_corner",
friendlyname = "Solid Yellow Side Line (Wide) Corner",
tex = "streets_line_edge_thick_yellow.png",
flip_required = true,
category = {color = "yellow", section = "sidelines"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "double_solid_yellow_center_line",
friendlyname = "Double Solid Yellow Center Line",
tex = "streets_line_solid_double_yellow.png",
flip_required = false,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "double_dashed_yellow_center_line",
friendlyname = "Double Dashed Yellow Center Line",
tex = "streets_line_dashed_double_yellow.png",
flip_required = false,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "mixed_yellow_center_line",
friendlyname = "Solid/Dashed Yellow Center Line",
tex = "streets_line_mixed_double_yellow.png",
flip_required = true,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "solid_yellow_stripe",
friendlyname = "Solid Yellow Stripe",
tex = "streets_crosswalk_yellow.png",
flip_required = false,
category = {color = "yellow", section = "other"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "yellow_arrow_straight",
friendlyname = "Yellow Arrow (straight)",
tex = "streets_arrow_straight_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "yellow_arrow_left",
friendlyname = "Yellow Arrow (left)",
tex = "streets_arrow_left_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "yellow_arrow_right",
friendlyname = "Yellow Arrow (right)",
tex = "streets_arrow_right_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "yellow_arrow_left_straight",
friendlyname = "Yellow Arrow (left+straight)",
tex = "streets_arrow_straightleft_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "yellow_arrow_straight_right",
friendlyname = "Yellow Arrow (straight+right)",
tex = "streets_arrow_straightright_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "yellow_arrow_left_straight_right",
friendlyname = "Yellow Arrow (left+straight+right)",
tex = "streets_arrow_straightleftright_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "yellow_arrow_left_right",
friendlyname = "Yellow Arrow (left+right)",
tex = "streets_arrow_leftright_yellow.png",
flip_required = false,
category = {color = "yellow", section = "arrows"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "yellow_parking",
friendlyname = "Yellow Parking",
tex = "streets_parking_yellow.png",
flip_required = false,
category = {color = "yellow", section = "symbols"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "solid_yellow_diagonal_line",
friendlyname = "Solid Yellow Diagonal Line",
tex = "streets_zigzag_yellow.png",
flip_required = true,
category = {color = "yellow", section = "other"},
dye_needed = {yellow = 2},
})
streets.register_road_marking({
name = "double_solid_yellow_diagonal_line",
friendlyname = "Double Solid Yellow Diagonal Line",
tex = "streets_forbidden_yellow.png",
flip_required = true,
category = {color = "yellow", section = "other"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "yellow_x",
friendlyname = "Yellow X",
tex = "streets_cross_yellow.png",
flip_required = false,
category = {color = "yellow", section = "symbols"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "solid_yellow_center_line_corner",
friendlyname = "Solid Yellow Center Line Corner",
tex = "streets_rw_solid_curve.png",
flip_required = true,
category = {color = "yellow", section = "centerlinecorners"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "solid_yellow_center_line_tjunction",
friendlyname = "Solid Yellow Center Line T-Junction",
tex = "streets_rw_solid_tjunction.png",
flip_required = true,
category = {color = "yellow", section = "centerlinecorners"},
dye_needed = {yellow = 4},
})
streets.register_road_marking({
name = "solid_yellow_center_line_crossing",
friendlyname = "Solid Yellow Center Line Crossing",
tex = "streets_rw_solid_crossing.png",
flip_required = false,
category = {color = "yellow", section = "centerlinecorners"},
dye_needed = {yellow = 5},
})
streets.register_road_marking({
name = "double_yellow_center_line_wide",
friendlyname = "Double Solid Yellow Center Line (Wide)",
tex = "streets_line_solid_double_wide_yellow.png",
flip_required = false,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 5},
})
streets.register_road_marking({
name = "solid_yellow_center_line_wide",
friendlyname = "Solid Yellow Center Line (Wide)",
tex = "streets_line_solid_wide_yellow.png",
flip_required = false,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "solid_yellow_center_line_wide_corner",
friendlyname = "Solid Yellow Center Line (Wide) Corner",
tex = "streets_line_solid_wide_yellow_corner.png",
flip_required = true,
category = {color = "yellow", section = "centerlinecorners"},
dye_needed = {yellow = 3},
})
streets.register_road_marking({
name = "double_yellow_center_line_wide_corner",
friendlyname = "Double Solid Yellow Center Line (Wide) Corner",
tex = "streets_line_solid_double_wide_yellow_corner.png",
flip_required = true,
category = {color = "yellow", section = "centerlinecorners"},
dye_needed = {yellow = 5},
})
streets.register_road_marking({
name = "solid_yellow_center_line_wide_offset",
friendlyname = "Solid Yellow Center Line (Wide, Offset)",
tex = "streets_line_solid_offset_wide_yellow.png",
flip_required = true,
category = {color = "yellow", section = "centerlines"},
dye_needed = {yellow = 3},
name = "double_solid_{color}_diagonal_line",
friendlyname = "Double Solid White Diagonal Line",
tex = "streets_double_solid_diagonal_line.png",
section = "other",
dye_needed = 4,
rotation = { r90 = 1},
})

View File

@ -11,6 +11,7 @@ streets.register_road_surface({
tiles = {"streets_asphalt.png"},
groups = {cracky = 3,asphalt = 1},
sounds = default.node_sound_stone_defaults(),
register_stairs = true,
craft = {
output = "streets:asphalt 1",
type = "cooking",
@ -25,6 +26,7 @@ streets.register_road_surface({
tiles = {"streets_asphalt_red.png"},
groups = {cracky = 3,asphalt = 1},
sounds = default.node_sound_stone_defaults(),
register_stairs = true,
craft = {
output = "streets:asphalt_red 1",
type = "shapeless",
@ -32,7 +34,7 @@ streets.register_road_surface({
}
})
streets.register_road_surface({
--[[streets.register_road_surface({
name = "asphalt_yellow",
friendlyname = "Yellow Asphalt",
tiles = {"streets_asphalt_yellow.png"},
@ -44,6 +46,7 @@ streets.register_road_surface({
recipe = {"streets:asphalt", "dye:yellow"}
}
})
]]
streets.register_road_surface({
name = "asphalt_blue",
@ -51,6 +54,7 @@ streets.register_road_surface({
tiles = {"streets_asphalt_blue.png"},
groups = {cracky = 3,asphalt = 1},
sounds = default.node_sound_stone_defaults(),
register_stairs = false,
craft = {
output = "streets:asphalt_blue 1",
type = "shapeless",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

View File

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

View File

Before

Width:  |  Height:  |  Size: 388 B

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

View File

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

View File

Before

Width:  |  Height:  |  Size: 438 B

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 B