Add "Fallback state" for freed routes, move p_mesecon_iface.lua to core
parent
96236c04dc
commit
f33bb563e7
|
@ -215,6 +215,10 @@ dofile(advtrains.modpath.."/craft_items.lua")
|
|||
|
||||
dofile(advtrains.modpath.."/log.lua")
|
||||
dofile(advtrains.modpath.."/passive.lua")
|
||||
if mesecon then
|
||||
dofile(advtrains.modpath.."/p_mesecon_iface.lua")
|
||||
end
|
||||
|
||||
|
||||
dofile(advtrains.modpath.."/lzb.lua")
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ minetest.override_item("mesecons_switch:mesecon_switch_off", {
|
|||
on_updated_from_nodedb = function(pos, node)
|
||||
mesecon.receptor_off(pos)
|
||||
end,
|
||||
luaautomation = {
|
||||
advtrains = {
|
||||
getstate = "off",
|
||||
setstate = function(pos, node, newstate)
|
||||
if newstate=="on" then
|
||||
|
@ -41,7 +41,7 @@ minetest.override_item("mesecons_switch:mesecon_switch_on", {
|
|||
on_updated_from_nodedb = function(pos, node)
|
||||
mesecon.receptor_on(pos)
|
||||
end,
|
||||
luaautomation = {
|
||||
advtrains = {
|
||||
getstate = "on",
|
||||
setstate = function(pos, node, newstate)
|
||||
if newstate=="off" then
|
||||
|
@ -49,5 +49,6 @@ minetest.override_item("mesecons_switch:mesecon_switch_on", {
|
|||
mesecon.receptor_off(pos)
|
||||
end
|
||||
end,
|
||||
fallback_state = "off",
|
||||
},
|
||||
})
|
|
@ -97,3 +97,25 @@ function advtrains.is_passive(parpos, pnode)
|
|||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- switches a node back to fallback state, if defined. Doesn't support pcnaming.
|
||||
function advtrains.set_fallback_state(pos, pnode)
|
||||
local node=pnode or advtrains.ndb.get_node(pos)
|
||||
local ndef=minetest.registered_nodes[node.name]
|
||||
local st
|
||||
if ndef and ndef.advtrains and ndef.advtrains.setstate
|
||||
and ndef.advtrains.fallback_state then
|
||||
if advtrains.get_train_at_pos(pos) then
|
||||
return false
|
||||
end
|
||||
|
||||
if advtrains.interlocking and advtrains.interlocking.route.has_route_lock(minetest.pos_to_string(pos)) then
|
||||
return false
|
||||
end
|
||||
|
||||
ndef.advtrains.setstate(pos, node, ndef.advtrains.fallback_state)
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
@ -302,6 +302,7 @@ minetest.register_node("advtrains:across_on", {
|
|||
advtrains.ndb.swap_node(pos, {name = "advtrains:across_off", param2 = node.param2}, true)
|
||||
end
|
||||
end,
|
||||
fallback_state = "off",
|
||||
},
|
||||
on_rightclick=function(pos, node, player)
|
||||
if advtrains.check_turnout_signal_protection(pos, player:get_player_name()) then
|
||||
|
|
|
@ -206,6 +206,7 @@ function ilrs.free_route_locks_indiv(pts, ts, nocallbacks)
|
|||
-- TODO use luaautomation timers?
|
||||
if not nocallbacks then
|
||||
minetest.after(0, ilrs.update_waiting, "lck", pts)
|
||||
minetest.after(0.5, advtrains.set_fallback_state, minetest.string_to_pos(pts))
|
||||
end
|
||||
end
|
||||
-- frees all route locks, even manual ones set with the tool, at a specific position
|
||||
|
|
|
@ -33,9 +33,7 @@ dofile(mp.."/active_common.lua")
|
|||
dofile(mp.."/atc_rail.lua")
|
||||
dofile(mp.."/operation_panel.lua")
|
||||
dofile(mp.."/pcnaming.lua")
|
||||
if mesecon then
|
||||
dofile(mp.."/p_mesecon_iface.lua")
|
||||
end
|
||||
|
||||
dofile(mp.."/chatcmds.lua")
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue