Handle tcb sides properly
This commit is contained in:
parent
2ba5a52fe2
commit
9f2bc5f4f1
59
routes.lua
59
routes.lua
@ -93,39 +93,46 @@ for k,v in pairs(advtrains.tcbs) do
|
|||||||
for j in (pos..","):gmatch("([^,]+),") do
|
for j in (pos..","):gmatch("([^,]+),") do
|
||||||
sp[#sp+1] = j
|
sp[#sp+1] = j
|
||||||
end
|
end
|
||||||
local sigpos = sp[1]..","..-sp[3].." "
|
|
||||||
|
|
||||||
local routestr = {}
|
local tcbsidestr = {}
|
||||||
for i,r in pairs(routes) do
|
local hasroutes = false
|
||||||
local pl = sigpos
|
for s=1,2 do
|
||||||
|
local routestr = {}
|
||||||
|
local side = v[s]
|
||||||
|
local routes = side.routes or {}
|
||||||
|
local signame = side.signal_name or ""
|
||||||
|
local auto = nil
|
||||||
|
|
||||||
local tcbps = {}
|
for i,r in pairs(routes) do
|
||||||
-- svgfile:write("<circle cx=\""..sp[1].."\" cy=\""..-sp[3].."\" r=\"3\" stroke=\"".."purple".."\" stroke-width=\"1\" fill=\"none\" />")
|
hasroutes = true
|
||||||
for ind,ps in ipairs(r) do
|
|
||||||
if ps.next then
|
local tcbps = {}
|
||||||
local tcb = ps.next.p
|
local tcbs = {}
|
||||||
-- print(minetest.serialize(ps.next))
|
-- svgfile:write("<circle cx=\""..sp[1].."\" cy=\""..-sp[3].."\" r=\"3\" stroke=\"".."purple".."\" stroke-width=\"1\" fill=\"none\" />")
|
||||||
if tcb and tcb.x then
|
for ind,ps in ipairs(r) do
|
||||||
tcbps[#tcbps+1] = tcb.x..","..tcb.y..","..tcb.z
|
if ps.next then
|
||||||
pl = pl.." "..tcb.x..","..-tcb.z
|
local tcb = ps.next.p
|
||||||
|
-- print(minetest.serialize(ps.next))
|
||||||
|
if tcb and tcb.x then
|
||||||
|
tcbps[#tcbps+1] = tcb.x..","..tcb.y..","..tcb.z
|
||||||
|
tcbs[#tcbs+1] = ps.next.s
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local auto = '"auto": false'
|
||||||
|
if side.routeset and i == side.routeset and side.route_auto then
|
||||||
|
auto = '"auto": true'
|
||||||
|
end
|
||||||
|
if #tcbps > 0 then
|
||||||
|
routestr[#routestr+1] = '{ "name": "'..r.name..'",\n"endpoint": "'..tcbps[#tcbps]..'",\n"ars": '..ars_to_text(r.ars)..","..auto..', "endpoint_side": '..tcbs[#tcbs]..' }'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
tcbsidestr[#tcbsidestr+1] = '{ "routes": [ '..table.concat(routestr, ",\n")..' ], "signal_name": "'..signame..'"}'
|
||||||
if #tcbps > 0 then
|
|
||||||
routestr[#routestr+1] = '{ "name": "'..r.name..'",\n"endpoint": "'..tcbps[#tcbps]..'",\n"ars": '..ars_to_text(r.ars)..' }'
|
|
||||||
end
|
|
||||||
color = "blue"
|
|
||||||
if r.ars and r.ars.default then
|
|
||||||
color = "green"
|
|
||||||
end
|
|
||||||
if pl~="" then
|
|
||||||
-- svgfile:write("<polyline points=\""..pl.."\" fill=\"none\" stroke=\""..color.."\" />")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if #routestr > 0 then
|
if hasroutes then
|
||||||
tcbstr[#tcbstr+1] = '"'..pos..'": { "type" : "Feature", "geometry": { "type": "Point", "coordinates": [ '..sp[1]..","..sp[3]..']}, "properties" : { "pos": "'..pos..'", "routes" : [\n'..table.concat(routestr,",\n").."]}}"
|
tcbstr[#tcbstr+1] = '"'..pos..'": { "type" : "Feature", "geometry": { "type": "Point", "coordinates": [ '..sp[1]..","..sp[3]..']}, "properties" : { "pos": "'..pos..'", "sides" : [\n'..table.concat(tcbsidestr,",\n").."]}}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
jsonfile:write("{"..table.concat(tcbstr,",\n").."}")
|
jsonfile:write("{"..table.concat(tcbstr,",\n").."}")
|
||||||
jsonfile:close()
|
jsonfile:close()
|
||||||
|
Loading…
Reference in New Issue
Block a user