diff options
author | ywang <yw05@forksworld.de> | 2021-05-31 16:57:09 +0200 |
---|---|---|
committer | ywang <yw05@forksworld.de> | 2021-05-31 16:57:09 +0200 |
commit | b07363971d26b78e3aa6adad38648cb7f9a19f56 (patch) | |
tree | 9adfee94cacc96b9457e7b5b25a4b71b42b6d99e /advtrains_signals_ks/init.lua | |
parent | b60e516bac7165b91a72649e33b9707b88d33be2 (diff) | |
download | advtrains-b07363971d26b78e3aa6adad38648cb7f9a19f56.tar.gz advtrains-b07363971d26b78e3aa6adad38648cb7f9a19f56.tar.bz2 advtrains-b07363971d26b78e3aa6adad38648cb7f9a19f56.zip |
disable distant signaling by default
Distant routesetting is not implemented yet
Diffstat (limited to 'advtrains_signals_ks/init.lua')
-rwxr-xr-x | advtrains_signals_ks/init.lua | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/advtrains_signals_ks/init.lua b/advtrains_signals_ks/init.lua index 3a2f4d0..ce05832 100755 --- a/advtrains_signals_ks/init.lua +++ b/advtrains_signals_ks/init.lua @@ -4,6 +4,14 @@ -- Note that the group value of advtrains_signal is 2, which means "step 2 of signal capabilities" -- advtrains_signal=1 is meant for signals that do not implement set_aspect. +local ildb = advtrains.interlocking.db + +local function usedst(pos) + local sigd = ildb.get_sigd_for_signal(pos) + if not sigd then return true end + return (ildb.get_tcbs(sigd).distant_mode ~= nil) +end + local function asp_to_zs3type(asp) local n = tonumber(asp) if not n or n < 4 then return "off" end @@ -59,7 +67,7 @@ local setaspectf = function(rot) advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_danger_"..rot, param2 = node.param2}) end setzs3v(pos, nil, rot) - else + elseif usedst(pos) then if asp.dst == -1 then advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_free_"..rot, param2 = node.param2}) elseif not asp.dst or asp.dst == 0 then @@ -68,6 +76,13 @@ local setaspectf = function(rot) advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_nextslow_"..rot, param2 = node.param2}) end setzs3v(pos, asp.dst, rot) + else + if asp.main == -1 then + advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_free_"..rot, param2 = node.param2}) + else + advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_slow_"..rot, param2 = node.param2}) + end + setzs3v(pos, nil, rot) end end end @@ -131,7 +146,11 @@ for _, rtab in ipairs({ danger = {asp = advtrains.interlocking.DANGER, n = "slow", ici=true}, slow = { asp = function(pos) - return { main = getzs3(pos) or -1, proceed_as_main = true, dst = 0 } + if usedst(pos) then + return { main = getzs3(pos) or -1, proceed_as_main = true, dst = 0 } + else + return { main = getzs3(pos) or 6, proceed_as_main = true } + end end, n = "nextslow" }, @@ -143,7 +162,11 @@ for _, rtab in ipairs({ }, free = { asp = function(pos) - return { main = getzs3(pos) or -1, proceed_as_main = true, dst = -1 } + if usedst(pos) then + return { main = getzs3(pos) or -1, proceed_as_main = true, dst = -1 } + else + return { main = -1, proceed_as_main = true } + end end, n = "shunt" }, |