From dcceb65ff04573375016f2460edcbd349e506a4e Mon Sep 17 00:00:00 2001 From: orwell Date: Wed, 12 Jun 2024 00:25:14 +0200 Subject: Respect route_role of signals during routesetting, assign distant signals in routes --- advtrains_interlocking/train_sections.lua | 33 +++++++++++-------------------- 1 file changed, 12 insertions(+), 21 deletions(-) (limited to 'advtrains_interlocking/train_sections.lua') 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 -- cgit v1.2.3