aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--advtrains_interlocking/route_ui.lua14
1 files changed, 13 insertions, 1 deletions
diff --git a/advtrains_interlocking/route_ui.lua b/advtrains_interlocking/route_ui.lua
index 478e8dc..89580a8 100644
--- a/advtrains_interlocking/route_ui.lua
+++ b/advtrains_interlocking/route_ui.lua
@@ -106,7 +106,7 @@ function atil.show_route_edit_form(pname, sigd, routeid)
end
form = form.."button[0.5,6;1,1;prev;<<<]"
- form = form.."button[1.5,6;1,1;back;Back]"
+ form = form.."button[1.5,6;1,1;back;"..routeid.."/"..#tcbs.routes.."]"
form = form.."button[2.5,6;1,1;next;>>>]"
@@ -114,6 +114,8 @@ function atil.show_route_edit_form(pname, sigd, routeid)
form = form.."button[3.5,6;2,1;noautogen;Clr Autogen]"
end
form = form.."button[5.5,6;3,1;delete;Delete Route]"
+ form = form.."button[0.5,7;3,1;back;Back to signal]"
+ form = form.."button[3.5,7;2,1;clone;Clone Route]"
form = form.."button[5.5,7;3,1;newfrom;New From Route]"
--atdebug(route.ars)
@@ -186,6 +188,16 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
table.remove(tcbs.routes, routeid)
advtrains.interlocking.show_signalling_form(sigd, pname)
end
+
+ if fields.clone then
+ -- if something set the route in the meantime, make sure this doesn't break.
+ atil.route.update_route(sigd, tcbs, nil, true)
+ local rcopy = table.copy(route)
+ rcopy.name = route.name.."_copy"
+ rcopy.smartroute_generated = nil
+ table.insert(tcbs.routes, routeid+1, rcopy)
+ advtrains.interlocking.show_signalling_form(sigd, pname)
+ end
if fields.newfrom then
advtrains.interlocking.init_route_prog(pname, sigd, route)