diff options
author | Y. Wang <yw05@forksworld.de> | 2022-07-03 15:34:42 +0200 |
---|---|---|
committer | Y. Wang <yw05@forksworld.de> | 2023-03-23 20:06:02 +0100 |
commit | 4a3d442601a800e28a274026392461bd1a7cb127 (patch) | |
tree | 0159f31dbb2e51daf29c0844a5eb36790f1d754d /advtrains_interlocking/routesetting.lua | |
parent | 875968f078ef89b13afae6d02a2dabe5ea7897cb (diff) | |
download | advtrains-4a3d442601a800e28a274026392461bd1a7cb127.tar.gz advtrains-4a3d442601a800e28a274026392461bd1a7cb127.tar.bz2 advtrains-4a3d442601a800e28a274026392461bd1a7cb127.zip |
Reduce number of set_aspect calls
Diffstat (limited to 'advtrains_interlocking/routesetting.lua')
-rw-r--r-- | advtrains_interlocking/routesetting.lua | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/advtrains_interlocking/routesetting.lua b/advtrains_interlocking/routesetting.lua index 4ce6fd3..857a681 100644 --- a/advtrains_interlocking/routesetting.lua +++ b/advtrains_interlocking/routesetting.lua @@ -115,8 +115,7 @@ function ilrs.set_route(signal, route, try) c_tcbs.route_committed = true c_tcbs.aspect = route.aspect or advtrains.interlocking.FULL_FREE c_tcbs.route_origin = signal - advtrains.interlocking.update_signal_aspect(c_tcbs) - signals[#signals+1] = c_tcbs.signal + signals[#signals+1] = c_tcbs end end -- advance @@ -136,11 +135,13 @@ function ilrs.set_route(signal, route, try) end for i = #signals, 1, -1 do if lastsig then - local pos = signals[i] + local tcbs = signals[i] + local pos = tcbs.signal local _, assigned_by = advtrains.distant.get_main(pos) if not assigned_by or assigned_by == "routesetting" then - advtrains.distant.assign(lastsig, signals[i], "routesetting") + advtrains.distant.assign(lastsig, pos, "routesetting", true) end + advtrains.interlocking.update_signal_aspect(tcbs, i ~= 1) end end @@ -250,14 +251,14 @@ function ilrs.cancel_route_from(sigd) c_tcbs.route_auto = nil c_tcbs.route_origin = nil - advtrains.interlocking.update_signal_aspect(c_tcbs) if c_tcbs.signal then local pos = c_tcbs.signal local _, assigned_by = advtrains.distant.get_main(pos) if assigned_by == "routesetting" then - advtrains.distant.unassign_dst(pos) + advtrains.distant.unassign_dst(pos, true) end end + advtrains.interlocking.update_signal_aspect(c_tcbs) c_ts_id = c_tcbs.ts_id if not c_tcbs then |