diff options
Diffstat (limited to 'po/vi')
0 files changed, 0 insertions, 0 deletions
-- Interlocking counterpart of LZB, which has been moved into the core...
-- Registers LZB callback for signal management.
--[[
usage of lzbdata:
{
travsht = boolean indicating whether the train will be a shunt move at "trav"
travspd = speed restriction at end of traverser
travwspd = warning speed res.t
}
]]
local SHUNT_SPEED_MAX = advtrains.SHUNT_SPEED_MAX
local il = advtrains.interlocking
local function get_over_function(speed, shunt, asptype)
return function(pos, id, train, index, speed, lzbdata)
if speed == 0 and minetest.settings:get_bool("at_il_force_lzb_halt") then
atwarn(id,"overrun LZB 0 restriction (red signal) ",pos)
-- Set train 1 index backward. Hope this does not lead to bugs...
--train.index = index - 0.5
advtrains.speed.set_restriction(train, "main", 0)
--TODO temporary
--advtrains.drb_dump(id)
--error("Debug: "..id.." triggered LZB-0")
else
advtrains.speed.set_restriction(train, asptype, speed or -1)
train.is_shunt = shunt
end
--atdebug("train drove over IP: speed=",speed,"shunt=",shunt)
end
end
advtrains.tnc_register_on_approach(function(pos, id, train, index, has_entered, lzbdata)
--atdebug(id,"IL ApprC",pos,index,lzbdata)
--train.debug = advtrains.print_concat_table({train.is_shunt,"|",index,"|",lzbdata})
local pts = advtrains.roundfloorpts(pos)
local cn = train.path_cn[index]
local travsht = lzbdata.il_shunt
local travspd = lzbdata.il_speed
if travsht==nil then
-- lzbdata has reset
travspd = train.speed_restriction
travsht = train.is_shunt or false
end
-- check for signal
local asp, spos = il.db.get_ip_signal_asp(pts, cn)
-- do ARS if needed
local ars_enabled = not train.ars_disable
-- Note on ars_disable:
-- Theoretically, the ars_disable flag would need to behave like the speed restriction field: it should be