The station/stop rail could add extra functionality to update passengers on the departure time.
functionality, which is regrettably basically undocumented at this stage. For those who know Lua, functions defined in advtrains/advtrains_line_automation/railwaytime.lua are available under rwt.* in LuaATC. e.g.
The breakage with backwards compatibility is for signal mod authors really, not end users I think current setups should keep work as they used to. Here is a patch that addresses the change in behaviour with default signals (wallmounted, lampless and frestanding) no longer de-restricting speed.
Code: Select all
From 92980a2dfb07b266815f8c6bf6a5afa6a9b582b7 Mon Sep 17 00:00:00 2001
From: Blockhead
Date: Fri, 26 Feb 2021 20:34:02 +1100
Subject: [PATCH] Restore old behaviour: default signals allow max speed
---
advtrains/signals.lua | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/advtrains/signals.lua b/advtrains/signals.lua
index 9df2f99..3a3efc4 100644
--- a/advtrains/signals.lua
+++ b/advtrains/signals.lua
@@ -21,7 +21,7 @@ return {
end
local suppasp = {
- main = {0, false},
+ main = {0, -1},
dst = {false},
shunt = nil,
proceed_as_main = true,
@@ -32,6 +32,14 @@ local suppasp = {
}
}
+local function gen_get_aspect(r)
+ return function(pos,node)
+ return (aspect(r=="on")
+ and {main=-1, proceed_as_main = true})
+ or {main=0}
+ end
+end
+
for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", als="green"}}) do
advtrains.trackplacer.register_tracktype("advtrains:retrosignal", "")
@@ -91,9 +99,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red",
advtrains.ndb.swap_node(pos, {name = "advtrains:retrosignal_off"..rotation, param2 = node.param2}, true)
end
end,
- get_aspect = function(pos, node)
- return aspect(r=="on")
- end,
+ get_aspect = gen_get_aspect(r),
supported_aspects = suppasp,
},
can_dig = can_dig_func,
@@ -139,7 +145,9 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red",
advtrains.interlocking.show_ip_form(pos, pname)
elseif advtrains.check_turnout_signal_protection(pos, player:get_player_name()) then
advtrains.setstate(pos, f.als, node)
- advtrains.interlocking.signal_on_aspect_changed(pos)
+ if advtrains.interlocking then
+ advtrains.interlocking.signal_on_aspect_changed(pos)
+ end
end
end,
-- new signal API
@@ -151,9 +159,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red",
advtrains.ndb.swap_node(pos, {name = "advtrains:signal_off"..rotation, param2 = node.param2}, true)
end
end,
- get_aspect = function(pos, node)
- return aspect(r=="on")
- end,
+ get_aspect = gen_get_aspect(r),
supported_aspects = suppasp,
getstate = f.ls,
setstate = function(pos, node, newstate)
@@ -220,9 +226,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red",
advtrains.ndb.swap_node(pos, {name = "advtrains:signal_wall_"..loc.."_off", param2 = node.param2}, true)
end
end,
- get_aspect = function(pos, node)
- return aspect(r=="on")
- end,
+ get_aspect = gen_get_aspect(r),
supported_aspects = suppasp,
getstate = f.ls,
setstate = function(pos, node, newstate)
--
2.30.1.windows.1