aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--advtrains_interlocking/ars.lua3
-rw-r--r--advtrains_interlocking/routesetting.lua7
-rwxr-xr-xadvtrains_interlocking/tcb_ts_ui.lua9
-rw-r--r--advtrains_luaautomation/environment.lua4
4 files changed, 16 insertions, 7 deletions
diff --git a/advtrains_interlocking/ars.lua b/advtrains_interlocking/ars.lua
index 393878a..99401d4 100644
--- a/advtrains_interlocking/ars.lua
+++ b/advtrains_interlocking/ars.lua
@@ -70,6 +70,7 @@
]]
local il = advtrains.interlocking
+local S = il.translate
local function parse_trainlen(tlstr)
mins, maxs = string.match(tlstr, "^(%d*)%-(%d+)$")
@@ -385,7 +386,7 @@ function advtrains.interlocking.ars_check(signalpos, train, trig_from_dst)
--atdebug("Ars setting ",rteid)
--delay routesetting, it should not occur inside train step
-- using after here is OK because that gets called on every path recalculation
- minetest.after(0, il.route.update_route, sigd, tcbs, rteid, nil)
+ minetest.after(0, il.route.update_route, sigd, tcbs, rteid, nil, S("Train @1", train.id))
end
end
end
diff --git a/advtrains_interlocking/routesetting.lua b/advtrains_interlocking/routesetting.lua
index 2332040..eec1460 100644
--- a/advtrains_interlocking/routesetting.lua
+++ b/advtrains_interlocking/routesetting.lua
@@ -329,6 +329,7 @@ function ilrs.cancel_route_from(sigd)
c_tcbs.route_aspect = nil
c_tcbs.route_remote = nil
c_tcbs.routeset = nil
+ c_tcbs.routeset_trigger = nil
c_tcbs.route_auto = nil
c_tcbs.route_origin = nil
@@ -369,7 +370,8 @@ end
-- sigd, tcbs: self-explanatory
-- newrte: If a new route should be set, the route index of it (in tcbs.routes). Can also be a table (multi-ars). nil otherwise
-- cancel: true in combination with newrte=nil causes cancellation of the current route.
-function ilrs.update_route(sigd, tcbs, newrte, cancel)
+-- trigger: The reason for setting the route
+function ilrs.update_route(sigd, tcbs, newrte, cancel, trigger)
--atdebug("Update_Route for",sigd,tcbs.signal_name)
local has_changed_aspect = false
if tcbs.route_origin and not sigd_equal(tcbs.route_origin, sigd) then
@@ -388,6 +390,7 @@ function ilrs.update_route(sigd, tcbs, newrte, cancel)
tcbs.route_remote = nil
has_changed_aspect = true
tcbs.routeset = nil
+ tcbs.routeset_trigger = nil
tcbs.route_auto = nil
end
if newrte or tcbs.routeset then
@@ -399,11 +402,13 @@ function ilrs.update_route(sigd, tcbs, newrte, cancel)
error("update_route got multi-ARS with empty table, this is not allowed")
end
tcbs.routeset = newrte
+ tcbs.routeset_trigger = trigger
else
if type(tcbs.routeset)=="table" and not next(tcbs.routeset) then
-- just unset, don't error
atwarn(sigd, "had multi-ARS route set with empty list! Cancelled!")
tcbs.routeset = nil
+ tcbs.routeset_trigger = nil
return
end
end
diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua
index c9cae07..a44fd66 100755
--- a/advtrains_interlocking/tcb_ts_ui.lua
+++ b/advtrains_interlocking/tcb_ts_ui.lua
@@ -858,12 +858,13 @@ function advtrains.interlocking.show_signalling_form(sigd, pname, sel_rte, calle
form = form.."label[0.5,2.5;"..S("A route is requested from this signal:").."]"
form = form.."label[0.5,3.0;"..minetest.formspec_escape(rte.name).."]"
end
+ form = form .. "label[0.5,3.5;" .. core.formspec_escape(S("Routesetting trigger: @1", tcbs.routeset_trigger or S("Unknown reason"))) .. "]"
if tcbs.route_committed then
- form = form.."label[0.5,3.5;"..S("Route has been set.").."]"
+ form = form.."label[0.5,4;"..S("Route has been set.").."]"
else
- form = form.."label[0.5,3.5;"..S("Waiting for route to be set...").."]"
+ form = form.."label[0.5,4;"..S("Waiting for route to be set...").."]"
if tcbs.route_rsn then
- form = form.."label[0.5,4;"..minetest.formspec_escape(tcbs.route_rsn).."]"
+ form = form.."label[0.5,4.5;"..minetest.formspec_escape(tcbs.route_rsn).."]"
end
end
if not tcbs.route_auto then
@@ -1044,7 +1045,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
if sel_rte and tcbs.routes[sel_rte] then
if fields.setroute then
- ilrs.update_route(sigd, tcbs, sel_rte)
+ ilrs.update_route(sigd, tcbs, sel_rte, nil, S("Manual routesetting by @1", pname))
end
if fields.dsproute then
local t = os.clock()
diff --git a/advtrains_luaautomation/environment.lua b/advtrains_luaautomation/environment.lua
index 184d346..50eca7c 100644
--- a/advtrains_luaautomation/environment.lua
+++ b/advtrains_luaautomation/environment.lua
@@ -1,6 +1,8 @@
-------------
-- lua sandboxed environment
+local S = atlatc.translate
+
-- function to cross out functions and userdata.
-- modified from dump()
function atlatc.remove_invalid_data(o, nested)
@@ -218,7 +220,7 @@ if advtrains.interlocking then
end
static_env.set_route = function(signal, route_name)
local pos, sigd, tcbs, routeid, route = gen_checks(signal, route_name)
- return advtrains.interlocking.route.update_route(sigd, tcbs, routeid)
+ return advtrains.interlocking.route.update_route(sigd, tcbs, routeid, nil, S("LuaATC component"))
end
static_env.cancel_route = function(signal)
local pos, sigd, tcbs, routeid, route = gen_checks(signal, "", true)