aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author1F616EMO <root@1f616emo.xyz>2026-06-12 00:07:50 +0800
committerorwell <orwell@bleipb.de>2026-07-08 21:33:40 +0200
commite5c5ae1af136fc73b7c7c9b653c314235122957d (patch)
tree3705ea717b899353029f097d29fea7b7d8939ef6
parent1b3b4eb8a76cb059ff1f6bbaa7858f4c12d6b48a (diff)
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.
-rw-r--r--advtrains_luaautomation/environment.lua12
1 files changed, 12 insertions, 0 deletions
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)