Fix new green signals bug caused by old trav_lzbdata, and callback loop in signalling formspec
parent
61329c11a2
commit
114b915518
|
@ -69,6 +69,7 @@ local function resolve_latest_lzbdata(ckp, index)
|
||||||
if ckpi.index <= index and ckpi.lzbdata then
|
if ckpi.index <= index and ckpi.lzbdata then
|
||||||
return ckpi.lzbdata
|
return ckpi.lzbdata
|
||||||
end
|
end
|
||||||
|
i=i-1
|
||||||
end
|
end
|
||||||
return {}
|
return {}
|
||||||
end
|
end
|
||||||
|
@ -197,6 +198,8 @@ function advtrains.lzb_invalidate_ahead(train, start_idx)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
train.lzb.trav_index = idx
|
train.lzb.trav_index = idx
|
||||||
|
-- FIX reset trav_lzbdata (look_ahead fetches these when required)
|
||||||
|
train.lzb.trav_lzbdata = nil
|
||||||
-- re-apply all checkpoints to path_speed
|
-- re-apply all checkpoints to path_speed
|
||||||
train.path_speed = {}
|
train.path_speed = {}
|
||||||
for _,ckp in ipairs(train.lzb.checkpoints) do
|
for _,ckp in ipairs(train.lzb.checkpoints) do
|
||||||
|
|
|
@ -196,7 +196,6 @@ function o.get_trains_over(ppos)
|
||||||
local r = {}
|
local r = {}
|
||||||
local i = 1
|
local i = 1
|
||||||
while t[i] do
|
while t[i] do
|
||||||
local train = advtrains.trains[t[i]]
|
|
||||||
local idx = t[i+1]
|
local idx = t[i+1]
|
||||||
r[t[i]] = idx
|
r[t[i]] = idx
|
||||||
i = i + 2
|
i = i + 2
|
||||||
|
|
|
@ -558,7 +558,7 @@ local sig_pselidx = {}
|
||||||
-- Players having a signalling form open
|
-- Players having a signalling form open
|
||||||
local p_open_sig_form = {}
|
local p_open_sig_form = {}
|
||||||
|
|
||||||
function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte)
|
function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, called_from_form_update)
|
||||||
if not minetest.check_player_privs(pname, "train_operator") then
|
if not minetest.check_player_privs(pname, "train_operator") then
|
||||||
minetest.chat_send_player(pname, "Insufficient privileges to use this!")
|
minetest.chat_send_player(pname, "Insufficient privileges to use this!")
|
||||||
return
|
return
|
||||||
|
@ -651,7 +651,10 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte)
|
||||||
p_open_sig_form[pname] = sigd
|
p_open_sig_form[pname] = sigd
|
||||||
|
|
||||||
-- always a good idea to update the signal aspect
|
-- always a good idea to update the signal aspect
|
||||||
advtrains.interlocking.update_signal_aspect(tcbs)
|
if not called_from_form_update then
|
||||||
|
-- FIX prevent a callback loop
|
||||||
|
advtrains.interlocking.update_signal_aspect(tcbs)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function advtrains.interlocking.update_player_forms(sigd)
|
function advtrains.interlocking.update_player_forms(sigd)
|
||||||
|
@ -763,7 +766,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
tcbs.route_auto = false
|
tcbs.route_auto = false
|
||||||
end
|
end
|
||||||
|
|
||||||
advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte)
|
advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue