diff options
Diffstat (limited to 'advtrains_interlocking/tcb_ts_ui.lua')
-rwxr-xr-x | advtrains_interlocking/tcb_ts_ui.lua | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua index 0111f5e..5ca9c3a 100755 --- a/advtrains_interlocking/tcb_ts_ui.lua +++ b/advtrains_interlocking/tcb_ts_ui.lua @@ -922,6 +922,7 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle if hasprivs then form = form.."button[0.5,8;2.5,1;smartroute;"..S("Smart Route").."]" form = form.."button[ 3,8;2.5,1;newroute;"..S("New (Manual)").."]" + form = form.."button_exit[5.5,8;1.5,1;unassign;"..S("Unassign\nSignal").."]" form = form..string.format("checkbox[0.5,8.75;ars;"..S("Automatic routesetting")..";%s]", not tcbs.ars_disabled) form = form..string.format("checkbox[0.5,9.25;dstarstrig;"..S("Distant signal triggers ARS")..";%s]", not tcbs.no_dst_ars_trig) end @@ -995,7 +996,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local tcbs = ildb.get_tcbs(sigd) if not tcbs then return end - if fields.quit then + if fields.quit and not fields.unassign then sig_pselidx[pname] = nil p_open_sig_form[pname] = nil -- form quit: disable temporary ARS ignore @@ -1082,6 +1083,23 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end end + if fields.unassign and hasprivs then + -- unassigning the signal from the tcbs + -- only when no route is set. + -- Routes and name remain saved, in case the player wants to reassign a new signal + if not tcbs.routeset then + local signal_pos = tcbs.signal + ildb.set_sigd_for_signal(signal_pos, nil) + tcbs.signal = nil + tcbs.route_aspect = nil + tcbs.route_remote = nil + p_open_sig_form[pname] = nil -- form is closed/left, do not reopen + minetest.chat_send_player(pname, S("Signal has been unassigned. Name and routes are kept for reuse.")) + return + else + minetest.chat_send_player(pname, S("Please cancel route first!")) + end + end if fields.ars then tcbs.ars_disabled = not minetest.is_yes(fields.ars) |