aboutsummaryrefslogtreecommitdiff
path: root/advtrains_interlocking
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains_interlocking')
-rw-r--r--advtrains_interlocking/init.lua1
-rw-r--r--advtrains_interlocking/tcb_ts_ui.lua2
-rw-r--r--advtrains_interlocking/textures/at_il_tool.pngbin0 -> 337 bytes
-rw-r--r--advtrains_interlocking/tool.lua66
4 files changed, 68 insertions, 1 deletions
diff --git a/advtrains_interlocking/init.lua b/advtrains_interlocking/init.lua
index d6625eb..1a0929d 100644
--- a/advtrains_interlocking/init.lua
+++ b/advtrains_interlocking/init.lua
@@ -12,6 +12,7 @@ dofile(modpath.."train_sections.lua")
dofile(modpath.."route_prog.lua")
dofile(modpath.."routesetting.lua")
dofile(modpath.."tcb_ts_ui.lua")
+dofile(modpath.."tool.lua")
dofile(modpath.."lzb.lua")
diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua
index a205165..450c756 100644
--- a/advtrains_interlocking/tcb_ts_ui.lua
+++ b/advtrains_interlocking/tcb_ts_ui.lua
@@ -635,7 +635,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
advtrains.interlocking.visualize_route(sigd, tcbs.routes[sel_rte], "disp_"..t)
minetest.after(10, function() advtrains.interlocking.clear_visu_context("disp_"..t) end)
end
- if fields.renroute and hasprivs then
+ if fields.editroute and hasprivs then
local rte = tcbs.routes[sel_rte]
minetest.show_formspec(pname, formname.."_renroute_"..sel_rte, "field[name;Enter new route name;"..rte.name.."]")
return
diff --git a/advtrains_interlocking/textures/at_il_tool.png b/advtrains_interlocking/textures/at_il_tool.png
new file mode 100644
index 0000000..f6ce1cc
--- /dev/null
+++ b/advtrains_interlocking/textures/at_il_tool.png
Binary files differ
diff --git a/advtrains_interlocking/tool.lua b/advtrains_interlocking/tool.lua
new file mode 100644
index 0000000..5d38b3a
--- /dev/null
+++ b/advtrains_interlocking/tool.lua
@@ -0,0 +1,66 @@
+-- tool.lua
+-- Interlocking tool
+
+local ilrs = advtrains.interlocking.route
+
+minetest.register_craftitem("advtrains_interlocking:tool",{
+ description = "Interlocking tool\nright-click turnouts to inspect route locks",
+ groups = {cracky=1}, -- key=name, value=rating; rating=1..3.
+ inventory_image = "at_il_tool.png",
+ wield_image = "at_il_tool.png",
+ stack_max = 1,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pname = placer:get_player_name()
+ if not pname then
+ return
+ end
+ if not minetest.check_player_privs(pname, {interlocking=true}) then
+ minetest.chat_send_player(pname, "Insufficient privileges to use this!")
+ return
+ end
+ if pointed_thing.type=="node" then
+ local pos=pointed_thing.under
+ if advtrains.is_passive(pos) then
+ local form = "size[7,5]label[0.5,0.5;Route lock inspector]"
+ local pts = minetest.pos_to_string(pos)
+
+ local rtl = ilrs.has_route_lock(pts)
+
+ if rtl then
+ form = form.."label[0.5,1;Route locks currently put:\n"..rtl.."]"
+ form = form.."button_exit[0.5,3.5; 5,1;clear;Clear]"
+ else
+ form = form.."label[0.5,1;No route locks set]"
+ form = form.."button_exit[0.5,3.5; 5,1;emplace;Emplace manual lock]"
+ end
+
+ minetest.show_formspec(pname, "at_il_rtool_"..pts, form)
+ else
+ minetest.chat_send_player(pname, "Cannot use this here.")
+ return
+ end
+ end
+ end,
+})
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local pname = player:get_player_name()
+ if not minetest.check_player_privs(pname, "interlocking") then
+ return
+ end
+ local pos
+ local pts = string.match(formname, "^at_il_rtool_(.+)$")
+ if pts then
+ pos = minetest.string_to_pos(pts)
+ end
+ if pos then
+ if advtrains.is_passive(pos) then
+ if fields.clear then
+ ilrs.remove_route_locks(pts)
+ end
+ if fields.emplace then
+ ilrs.add_manual_route_lock(pts, "Manual lock ("..pname..")")
+ end
+ end
+ end
+end)