From e5c5ae1af136fc73b7c7c9b653c314235122957d Mon Sep 17 00:00:00 2001 From: 1F616EMO Date: Fri, 12 Jun 2026 00:07:50 +0800 Subject: Add get_active_route and list_routes to LuaATC get_active_route returns the name of the route currently set on the signal. Useful for rendering signalling control panels. list_routes returns an array of valid route names. Useful for implementing remote controls of signals. --- advtrains_luaautomation/environment.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/advtrains_luaautomation/environment.lua b/advtrains_luaautomation/environment.lua index 4d4ac47..93614ef 100644 --- a/advtrains_luaautomation/environment.lua +++ b/advtrains_luaautomation/environment.lua @@ -230,6 +230,18 @@ if advtrains.interlocking then local pos, sigd, tcbs, routeid, route = gen_checks(signal, "", true) return advtrains.interlocking.route.update_route(sigd, tcbs, nil, true) end + static_env.get_active_route = function(signal) + local pos, sigd, tcbs = gen_checks(signal, "", true) + return tcbs.routeset and tcbs.routes[tcbs.routeset] and tcbs.routes[tcbs.routeset].name or nil + end + static_env.list_routes = function(signal) + local pos, sigd, tcbs = gen_checks(signal, "", true) + local routes = {} + for _, route in ipairs(tcbs.routes) do + routes[#routes+1] = route.name + end + return routes + end static_env.get_aspect = function(signal) local pos = atlatc.pcnaming.resolve_pos(signal) return advtrains.interlocking.signal.get_aspect_info(pos) -- cgit v1.2.3