aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authororwell96 <mono96.mml@gmail.com>2016-09-13 16:18:57 +0200
committerorwell96 <mono96.mml@gmail.com>2016-09-13 16:18:57 +0200
commita93fb4345e084a0fc67656b85084d9841a3c5ec9 (patch)
tree8f179af73990af9f1d479f9b8dbd43b3acc8a6d2
parent173829fe5918cef85999f925f397d14ce36c2cc2 (diff)
downloadadvtrains-a93fb4345e084a0fc67656b85084d9841a3c5ec9.tar.gz
advtrains-a93fb4345e084a0fc67656b85084d9841a3c5ec9.tar.bz2
advtrains-a93fb4345e084a0fc67656b85084d9841a3c5ec9.zip
make switches not switchable when train is on it, and do neccessary stuff on switching
-rw-r--r--tracks.lua11
1 files 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)