From a93fb4345e084a0fc67656b85084d9841a3c5ec9 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Tue, 13 Sep 2016 16:18:57 +0200 Subject: make switches not switchable when train is on it, and do neccessary stuff on switching --- tracks.lua | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tracks.lua b/tracks.lua index 338f4bb..e22954d 100644 --- a/tracks.lua +++ b/tracks.lua @@ -159,15 +159,14 @@ local t_45deg={ }]] function advtrains.register_tracks(tracktype, def, preset) local function make_switchfunc(suffix_target, mesecon_state) - return function(pos, node) + local switchfunc=function(pos, node) if advtrains.is_train_at_pos(pos) then return end - advtrains.invalidate_all_paths() minetest.set_node(pos, {name=def.nodename_prefix.."_"..suffix_target, param2=node.param2}) + advtrains.invalidate_all_paths() advtrains.reset_trackdb_position(pos) - end, {effector = { - ["action_"..mesecon_state] = function (pos, node) - minetest.swap_node(pos, {name=def.nodename_prefix.."_"..suffix_target, param2=node.param2}) - end + end + return switchfunc, {effector = { + ["action_"..mesecon_state] = switchfunc }} end local function make_overdef(suffix, rotation, conns, switchfunc, mesecontbl, in_creative_inv) -- cgit v1.2.3