diff options
author | Gabriel Pérez-Cerezo <gabriel@gpcf.eu> | 2020-07-02 18:42:21 +0200 |
---|---|---|
committer | Gabriel Pérez-Cerezo <gabriel@gpcf.eu> | 2020-07-02 18:42:21 +0200 |
commit | 9f2bc5f4f17301fde5c93fc2d68158274bab9439 (patch) | |
tree | 1984ce1d1ec89c2a7bea685c2f82ff405ca4a22c | |
parent | 2ba5a52fe2d4be16ccd84bf48f04cc08d04479ac (diff) | |
download | advtrains_netmapper-9f2bc5f4f17301fde5c93fc2d68158274bab9439.tar.gz advtrains_netmapper-9f2bc5f4f17301fde5c93fc2d68158274bab9439.tar.bz2 advtrains_netmapper-9f2bc5f4f17301fde5c93fc2d68158274bab9439.zip |
Handle tcb sides properly
-rwxr-xr-x | routes.lua | 61 |
1 files changed, 34 insertions, 27 deletions
@@ -93,39 +93,46 @@ for k,v in pairs(advtrains.tcbs) do for j in (pos..","):gmatch("([^,]+),") do sp[#sp+1] = j end - local sigpos = sp[1]..","..-sp[3].." " - local routestr = {} - for i,r in pairs(routes) do - local pl = sigpos - - local tcbps = {} - -- svgfile:write("<circle cx=\""..sp[1].."\" cy=\""..-sp[3].."\" r=\"3\" stroke=\"".."purple".."\" stroke-width=\"1\" fill=\"none\" />") - for ind,ps in ipairs(r) do - if ps.next then - 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 - pl = pl.." "..tcb.x..","..-tcb.z + local tcbsidestr = {} + local hasroutes = false + 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 + + for i,r in pairs(routes) do + hasroutes = true + + local tcbps = {} + local tcbs = {} + -- svgfile:write("<circle cx=\""..sp[1].."\" cy=\""..-sp[3].."\" r=\"3\" stroke=\"".."purple".."\" stroke-width=\"1\" fill=\"none\" />") + for ind,ps in ipairs(r) do + if ps.next then + 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 + 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 - - 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 + tcbsidestr[#tcbsidestr+1] = '{ "routes": [ '..table.concat(routestr, ",\n")..' ], "signal_name": "'..signame..'"}' end - if #routestr > 0 then - tcbstr[#tcbstr+1] = '"'..pos..'": { "type" : "Feature", "geometry": { "type": "Point", "coordinates": [ '..sp[1]..","..sp[3]..']}, "properties" : { "pos": "'..pos..'", "routes" : [\n'..table.concat(routestr,",\n").."]}}" + if hasroutes then + 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 + jsonfile:write("{"..table.concat(tcbstr,",\n").."}") jsonfile:close() |