aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authororwell96 <orwell@bleipb.de>2018-10-30 16:19:37 +0100
committerorwell96 <orwell@bleipb.de>2018-10-30 16:19:37 +0100
commit7bbe0c2468262fa25990a5bbc92967f9fb924e61 (patch)
tree3085f9e2691a323d6bab422c9e0d29e406dffeab
parent06216b0ca189b95a2e8a8a3689562f819988539f (diff)
downloadadvtrains-7bbe0c2468262fa25990a5bbc92967f9fb924e61.tar.gz
advtrains-7bbe0c2468262fa25990a5bbc92967f9fb924e61.tar.bz2
advtrains-7bbe0c2468262fa25990a5bbc92967f9fb924e61.zip
Replace "Allow accelereting train towards signal"
This is a better implementation of the same goal. The last commit caused trains to overrun the IP sometimes. Haven't noticed so far with this approach
-rw-r--r--advtrains_interlocking/lzb.lua38
-rw-r--r--advtrains_interlocking/routesetting.lua3
2 files changed, 18 insertions, 23 deletions
diff --git a/advtrains_interlocking/lzb.lua b/advtrains_interlocking/lzb.lua
index 0a5051a..16724c5 100644
--- a/advtrains_interlocking/lzb.lua
+++ b/advtrains_interlocking/lzb.lua
@@ -28,12 +28,12 @@ local il = advtrains.interlocking
local BRAKE_SPACE = 10
local AWARE_ZONE = 50
-local ADD_STAND = 2
-local ADD_SLOW = 1
+local ADD_STAND = 2.5
+local ADD_SLOW = 1.5
local ADD_FAST = 7
local ZONE_ROLL = 2
local ZONE_HOLD = 5 -- added on top of ZONE_ROLL
-local ZONE_VSLOW = 2 -- When speed is <2, still allow accelerating
+local ZONE_VSLOW = 3 -- When speed is <2, still allow accelerating
local SHUNT_SPEED_MAX = 4
@@ -176,26 +176,18 @@ local function apply_control(id, train)
--train.debug = train.debug .. "BRAKE!!!"
return
end
- if v1==0 and v0<2 then
- i = advtrains.path_get_index_by_offset(train, i, -ZONE_VSLOW)
- if i <= train.index then
- -- roll control
- train.ctrl.lzb = 2
- return
- end
- else
- i = advtrains.path_get_index_by_offset(train, i, -ZONE_ROLL)
- if i <= train.index then
- -- roll control
- train.ctrl.lzb = 2
- return
- end
- i = advtrains.path_get_index_by_offset(train, i, -ZONE_HOLD)
- if i <= train.index then
- -- hold speed
- train.ctrl.lzb = 3
- return
- end
+
+ i = advtrains.path_get_index_by_offset(train, i, -ZONE_ROLL)
+ if i <= train.index and v0>1 then
+ -- roll control
+ train.ctrl.lzb = 2
+ return
+ end
+ i = advtrains.path_get_index_by_offset(train, i, -ZONE_HOLD)
+ if i <= train.index and v0>1 then
+ -- hold speed
+ train.ctrl.lzb = 3
+ return
end
end
end
diff --git a/advtrains_interlocking/routesetting.lua b/advtrains_interlocking/routesetting.lua
index c6706f7..f13fcea 100644
--- a/advtrains_interlocking/routesetting.lua
+++ b/advtrains_interlocking/routesetting.lua
@@ -282,6 +282,9 @@ function ilrs.update_route(sigd, tcbs, newrte, cancel)
tcbs.route_rsn = nil
end
if newrte or tcbs.routeset then
+ if tcbs.route_committed then
+ return
+ end
if newrte then tcbs.routeset = newrte end
--atdebug("Setting:",tcbs.routeset)
local succ, rsn, cbts, cblk = ilrs.set_route(sigd, tcbs.routes[tcbs.routeset])