From c34794e8a1a28826a7e8443b46fa76e0de238978 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Sat, 21 Jul 2018 16:31:00 +0200 Subject: Implement routesetting Missing things: signal aspect updating, waiting routes handling, management /info tool --- advtrains_interlocking/train_related.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'advtrains_interlocking/train_related.lua') diff --git a/advtrains_interlocking/train_related.lua b/advtrains_interlocking/train_related.lua index 3d7e280..2dfbd5c 100644 --- a/advtrains_interlocking/train_related.lua +++ b/advtrains_interlocking/train_related.lua @@ -73,6 +73,19 @@ local function setsection(tid, train, ts_id, ts, origin) table.insert(ts.trains, tid) end + -- route setting - clear route state + if ts.route then + if ts.route.first then + local tcbs = advtrains.interlocking.db.get_tcbs(ts.route.origin) + if tcbs then + --TODO callbacks + tcbs.routeset = nil + tcbs.route_committed = nil + end + end + ts.route = nil + end + end local function freesection(tid, train, ts_id, ts) @@ -84,6 +97,15 @@ local function freesection(tid, train, ts_id, ts) if not ts.trains then ts.trains = {} end itremove(ts.trains, tid) + if ts.route_post then + advtrains.interlocking.route.free_route_locks(ts_id, ts.route_post.locks) + if ts.route_post.next then + --this does nothing when the train went the right way, because + -- "route" info is already cleared. + advtrains.interlocking.route.cancel_route_from(ts.route_post.next) + end + ts.route_post = nil + end end -- cgit v1.2.3