diff options
author | orwell <orwell@bleipb.de> | 2024-06-12 00:25:14 +0200 |
---|---|---|
committer | orwell <orwell@bleipb.de> | 2024-06-12 00:25:14 +0200 |
commit | dcceb65ff04573375016f2460edcbd349e506a4e (patch) | |
tree | 413ca8ce482a75bb7612888dd02a23870e118714 /advtrains_interlocking/train_sections.lua | |
parent | 72cae1327527672afe2bbb47662d42a44f086942 (diff) | |
download | advtrains-dcceb65ff04573375016f2460edcbd349e506a4e.tar.gz advtrains-dcceb65ff04573375016f2460edcbd349e506a4e.tar.bz2 advtrains-dcceb65ff04573375016f2460edcbd349e506a4e.zip |
Respect route_role of signals during routesetting, assign distant signals in routes
Diffstat (limited to 'advtrains_interlocking/train_sections.lua')
-rw-r--r-- | advtrains_interlocking/train_sections.lua | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/advtrains_interlocking/train_sections.lua b/advtrains_interlocking/train_sections.lua index 260f5a4..41da747 100644 --- a/advtrains_interlocking/train_sections.lua +++ b/advtrains_interlocking/train_sections.lua @@ -86,31 +86,22 @@ local function setsection(tid, train, ts_id, ts, sigd) advtrains.interlocking.route.cancel_route_from(ts.route.origin) atwarn("Route was cancelled.") else - -- train entered route regularily. Reset route and signal - tcbs.route_committed = nil - tcbs.route_comitted = nil -- TODO compatibility cleanup - tcbs.aspect = nil - tcbs.route_origin = nil - if tcbs.signal then - local spos = tcbs.signal - local _, setter = advtrains.distant.get_main(spos) - if setter == "routesetting" then - advtrains.distant.unassign_dst(spos, true) - end - end - advtrains.interlocking.update_signal_aspect(tcbs) - if tcbs.signal and sigd_equal(ts.route.entry, ts.route.origin) then - if tcbs.route_auto and tcbs.routeset then - --atdebug("Resetting route (",ts.route.origin,")") - advtrains.interlocking.route.update_route(ts.route.origin, tcbs) - else - tcbs.routeset = nil - end - end + -- train entered route regularily. end ts.route = nil end if tcbs.signal then + -- Reset route and signal + -- Note that the hit-route case is already handled by cancel_route_from + -- this code only handles signal at entering tcb and also triggers for non-route ts + tcbs.route_committed = nil + tcbs.route_aspect = nil + tcbs.route_remote = nil + tcbs.route_origin = nil + if not tcbs.route_auto then + tcbs.routeset = nil + end + advtrains.interlocking.signal.update_route_aspect(tcbs) advtrains.interlocking.route.update_route(sigd, tcbs) end end |