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.."/log.lua")
|
||||||
dofile(advtrains.modpath.."/passive.lua")
|
dofile(advtrains.modpath.."/passive.lua")
|
||||||
|
if mesecon then
|
||||||
|
dofile(advtrains.modpath.."/p_mesecon_iface.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
dofile(advtrains.modpath.."/lzb.lua")
|
dofile(advtrains.modpath.."/lzb.lua")
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ minetest.override_item("mesecons_switch:mesecon_switch_off", {
|
||||||
on_updated_from_nodedb = function(pos, node)
|
on_updated_from_nodedb = function(pos, node)
|
||||||
mesecon.receptor_off(pos)
|
mesecon.receptor_off(pos)
|
||||||
end,
|
end,
|
||||||
luaautomation = {
|
advtrains = {
|
||||||
getstate = "off",
|
getstate = "off",
|
||||||
setstate = function(pos, node, newstate)
|
setstate = function(pos, node, newstate)
|
||||||
if newstate=="on" then
|
if newstate=="on" then
|
||||||
|
@ -41,7 +41,7 @@ minetest.override_item("mesecons_switch:mesecon_switch_on", {
|
||||||
on_updated_from_nodedb = function(pos, node)
|
on_updated_from_nodedb = function(pos, node)
|
||||||
mesecon.receptor_on(pos)
|
mesecon.receptor_on(pos)
|
||||||
end,
|
end,
|
||||||
luaautomation = {
|
advtrains = {
|
||||||
getstate = "on",
|
getstate = "on",
|
||||||
setstate = function(pos, node, newstate)
|
setstate = function(pos, node, newstate)
|
||||||
if newstate=="off" then
|
if newstate=="off" then
|
||||||
|
@ -49,5 +49,6 @@ minetest.override_item("mesecons_switch:mesecon_switch_on", {
|
||||||
mesecon.receptor_off(pos)
|
mesecon.receptor_off(pos)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
fallback_state = "off",
|
||||||
},
|
},
|
||||||
})
|
})
|
|
@ -97,3 +97,25 @@ function advtrains.is_passive(parpos, pnode)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
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)
|
advtrains.ndb.swap_node(pos, {name = "advtrains:across_off", param2 = node.param2}, true)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
fallback_state = "off",
|
||||||
},
|
},
|
||||||
on_rightclick=function(pos, node, player)
|
on_rightclick=function(pos, node, player)
|
||||||
if advtrains.check_turnout_signal_protection(pos, player:get_player_name()) then
|
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?
|
-- TODO use luaautomation timers?
|
||||||
if not nocallbacks then
|
if not nocallbacks then
|
||||||
minetest.after(0, ilrs.update_waiting, "lck", pts)
|
minetest.after(0, ilrs.update_waiting, "lck", pts)
|
||||||
|
minetest.after(0.5, advtrains.set_fallback_state, minetest.string_to_pos(pts))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- frees all route locks, even manual ones set with the tool, at a specific position
|
-- 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.."/atc_rail.lua")
|
||||||
dofile(mp.."/operation_panel.lua")
|
dofile(mp.."/operation_panel.lua")
|
||||||
dofile(mp.."/pcnaming.lua")
|
dofile(mp.."/pcnaming.lua")
|
||||||
if mesecon then
|
|
||||||
dofile(mp.."/p_mesecon_iface.lua")
|
|
||||||
end
|
|
||||||
dofile(mp.."/chatcmds.lua")
|
dofile(mp.."/chatcmds.lua")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue