summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Pérez-Cerezo <gabriel@gpcf.eu>2020-07-02 18:42:21 +0200
committerGabriel Pérez-Cerezo <gabriel@gpcf.eu>2020-07-02 18:42:21 +0200
commit9f2bc5f4f17301fde5c93fc2d68158274bab9439 (patch)
tree1984ce1d1ec89c2a7bea685c2f82ff405ca4a22c
parent2ba5a52fe2d4be16ccd84bf48f04cc08d04479ac (diff)
downloadadvtrains_netmapper-9f2bc5f4f17301fde5c93fc2d68158274bab9439.tar.gz
advtrains_netmapper-9f2bc5f4f17301fde5c93fc2d68158274bab9439.tar.bz2
advtrains_netmapper-9f2bc5f4f17301fde5c93fc2d68158274bab9439.zip
Handle tcb sides properly
-rwxr-xr-xroutes.lua61
1 files changed, 34 insertions, 27 deletions
diff --git a/routes.lua b/routes.lua
index 25b4293..04b96fe 100755
--- a/routes.lua
+++ b/routes.lua
@@ -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()