Make using the default tracks optional, even in submods
If advtrains_train_track is disabled, don't register any tracks that use its model like the LuaATC automation rail, point speed restriction rail, station/stop rail. For LuaATC, the definition for firing an event when a train runs over the rail needs to be moved into the common defs so that other mods like linetrack can use that as an interface.
This commit is contained in:
parent
74bf177cc8
commit
ad49854fed
|
@ -1 +1,2 @@
|
|||
advtrains
|
||||
advtrains
|
||||
advtrains_train_track?
|
|
@ -42,14 +42,15 @@ local adefunc = function(def, preset, suffix, rotation)
|
|||
end
|
||||
|
||||
|
||||
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains_interlocking:dtrack_npr",
|
||||
texture_prefix="advtrains_dtrack_npr",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_npr.png",
|
||||
description="Point Speed Restriction Rail",
|
||||
formats={},
|
||||
get_additional_definiton = adefunc,
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
if minetest.get_modpath("advtrains_train_track") ~= nil then
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains_interlocking:dtrack_npr",
|
||||
texture_prefix="advtrains_dtrack_npr",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_npr.png",
|
||||
description="Point Speed Restriction Rail",
|
||||
formats={},
|
||||
get_additional_definiton = adefunc,
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
end
|
|
@ -1,2 +1,2 @@
|
|||
advtrains_interlocking
|
||||
advtrains_train_track
|
||||
advtrains_train_track?
|
|
@ -204,14 +204,15 @@ local adefunc = function(def, preset, suffix, rotation)
|
|||
}
|
||||
end
|
||||
|
||||
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains_line_automation:dtrack_stop",
|
||||
texture_prefix="advtrains_dtrack_stop",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_stop.png",
|
||||
description="Station/Stop Rail",
|
||||
formats={},
|
||||
get_additional_definiton = adefunc,
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
if minetest.get_modpath("advtrains_train_track") ~= nil then
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains_line_automation:dtrack_stop",
|
||||
texture_prefix="advtrains_dtrack_stop",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_stop.png",
|
||||
description="Station/Stop Rail",
|
||||
formats={},
|
||||
get_additional_definiton = adefunc,
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
end
|
|
@ -165,4 +165,11 @@ if advtrains.lines and advtrains.lines.sched then
|
|||
end)
|
||||
end
|
||||
|
||||
ac.trackdef_advtrains_defs = {
|
||||
on_train_enter = function(pos, train_id)
|
||||
--do async. Event is fired in train steps
|
||||
atlatc.interrupt.add(0, pos, {type="train", train=true, id=train_id})
|
||||
end,
|
||||
}
|
||||
|
||||
atlatc.active=ac
|
||||
|
|
|
@ -131,46 +131,39 @@ function r.fire_event(pos, evtdata)
|
|||
|
||||
end
|
||||
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains_luaautomation:dtrack",
|
||||
texture_prefix="advtrains_dtrack_atc",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_atc.png",
|
||||
description=atltrans("LuaAutomation ATC Rail"),
|
||||
formats={},
|
||||
get_additional_definiton = function(def, preset, suffix, rotation)
|
||||
return {
|
||||
after_place_node = atlatc.active.after_place_node,
|
||||
after_dig_node = atlatc.active.after_dig_node,
|
||||
|
||||
on_receive_fields = function(pos, ...)
|
||||
atlatc.active.on_receive_fields(pos, ...)
|
||||
|
||||
--set arrowconn (for ATC)
|
||||
local ph=minetest.pos_to_string(pos)
|
||||
local _, conns=advtrains.get_rail_info_at(pos, advtrains.all_tracktypes)
|
||||
atlatc.active.nodes[ph].arrowconn=conns[1].c
|
||||
end,
|
||||
|
||||
advtrains = {
|
||||
on_train_enter = function(pos, train_id)
|
||||
--do async. Event is fired in train steps
|
||||
atlatc.interrupt.add(0, pos, {type="train", train=true, id=train_id})
|
||||
if minetest.get_modpath("advtrains_train_track") ~= nil then
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains_luaautomation:dtrack",
|
||||
texture_prefix="advtrains_dtrack_atc",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_atc.png",
|
||||
description=atltrans("LuaAutomation ATC Rail"),
|
||||
formats={},
|
||||
get_additional_definiton = function(def, preset, suffix, rotation)
|
||||
return {
|
||||
after_place_node = atlatc.active.after_place_node,
|
||||
after_dig_node = atlatc.active.after_dig_node,
|
||||
on_receive_fields = function(pos, ...)
|
||||
atlatc.active.on_receive_fields(pos, ...)
|
||||
--set arrowconn (for ATC)
|
||||
local ph=minetest.pos_to_string(pos)
|
||||
local _, conns=advtrains.get_rail_info_at(pos, advtrains.all_tracktypes)
|
||||
atlatc.active.nodes[ph].arrowconn=conns[1].c
|
||||
end,
|
||||
},
|
||||
luaautomation = {
|
||||
fire_event=r.fire_event
|
||||
},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = atlatc.active.on_digiline_receive
|
||||
advtrains = atlatc.active.trackdef_advtrains_defs,
|
||||
luaautomation = {
|
||||
fire_event=r.fire_event
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
|
||||
digiline = {
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = atlatc.active.on_digiline_receive
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
end
|
||||
|
||||
atlatc.rail = r
|
||||
|
|
Loading…
Reference in New Issue