Fixes regarding signal assignments/tcbs

- No longer crashes when assigned tcb is removed
- don't forbid modification just because signal is assigned
This commit is contained in:
orwell96 2019-02-09 19:24:10 +01:00
parent 2d2cd9605b
commit fcb3dec0c0
1 changed files with 13 additions and 4 deletions

View File

@ -422,6 +422,9 @@ function ildb.remove_from_interlocking(sigd)
end end
end end
advtrains.interlocking.show_tcb_marker(sigd.p) advtrains.interlocking.show_tcb_marker(sigd.p)
if tcbs.signal then
return false
end
return true return true
end end
@ -461,9 +464,7 @@ end
function ildb.may_modify_tcbs(tcbs) function ildb.may_modify_tcbs(tcbs)
if tcbs.signal then if tcbs.ts_id then
return false
elseif tcbs.ts_id then
local ts = ildb.get_ts(tcbs.ts_id) local ts = ildb.get_ts(tcbs.ts_id)
if ts and not ildb.may_modify_ts(ts) then if ts and not ildb.may_modify_ts(ts) then
return false return false
@ -509,7 +510,15 @@ end
-- returns the sigd the signal at pos belongs to, if this is known -- returns the sigd the signal at pos belongs to, if this is known
function ildb.get_sigd_for_signal(pos) function ildb.get_sigd_for_signal(pos)
local pts = advtrains.roundfloorpts(pos) local pts = advtrains.roundfloorpts(pos)
return signal_assignments[pts] local sigd = signal_assignments[pts]
if sigd then
if not ildb.get_tcbs(sigd) then
signal_assignments[pts] = nil
return nil
end
return sigd
end
return nil
end end
function ildb.set_sigd_for_signal(pos, sigd) function ildb.set_sigd_for_signal(pos, sigd)
local pts = advtrains.roundfloorpts(pos) local pts = advtrains.roundfloorpts(pos)