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:
Blockhead 2020-07-07 18:19:56 +10:00 committed by Gabriel Pérez-Cerezo
parent 74bf177cc8
commit ad49854fed
6 changed files with 66 additions and 63 deletions

View File

@ -1 +1,2 @@
advtrains
advtrains_train_track?

View File

@ -42,8 +42,8 @@ local adefunc = function(def, preset, suffix, rotation)
end
advtrains.register_tracks("default", {
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",
@ -52,4 +52,5 @@ advtrains.register_tracks("default", {
description="Point Speed Restriction Rail",
formats={},
get_additional_definiton = adefunc,
}, advtrains.trackpresets.t_30deg_straightonly)
}, advtrains.trackpresets.t_30deg_straightonly)
end

View File

@ -1,2 +1,2 @@
advtrains_interlocking
advtrains_train_track
advtrains_train_track?

View File

@ -204,8 +204,8 @@ local adefunc = function(def, preset, suffix, rotation)
}
end
advtrains.register_tracks("default", {
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",
@ -214,4 +214,5 @@ advtrains.register_tracks("default", {
description="Station/Stop Rail",
formats={},
get_additional_definiton = adefunc,
}, advtrains.trackpresets.t_30deg_straightonly)
}, advtrains.trackpresets.t_30deg_straightonly)
end

View File

@ -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

View File

@ -131,7 +131,8 @@ function r.fire_event(pos, evtdata)
end
advtrains.register_tracks("default", {
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",
@ -143,22 +144,14 @@ advtrains.register_tracks("default", {
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})
end,
},
advtrains = atlatc.active.trackdef_advtrains_defs,
luaautomation = {
fire_event=r.fire_event
},
@ -170,7 +163,7 @@ advtrains.register_tracks("default", {
},
}
end,
}, advtrains.trackpresets.t_30deg_straightonly)
}, advtrains.trackpresets.t_30deg_straightonly)
end
atlatc.rail = r