From ad49854fed1ccd426db5ab43d6734856a6b0bc74 Mon Sep 17 00:00:00 2001 From: Blockhead Date: Tue, 7 Jul 2020 18:19:56 +1000 Subject: 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. --- advtrains_luaautomation/active_common.lua | 7 +++ advtrains_luaautomation/atc_rail.lua | 71 ++++++++++++++----------------- 2 files changed, 39 insertions(+), 39 deletions(-) (limited to 'advtrains_luaautomation') diff --git a/advtrains_luaautomation/active_common.lua b/advtrains_luaautomation/active_common.lua index 48f75ac..dac81b3 100644 --- a/advtrains_luaautomation/active_common.lua +++ b/advtrains_luaautomation/active_common.lua @@ -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 diff --git a/advtrains_luaautomation/atc_rail.lua b/advtrains_luaautomation/atc_rail.lua index ce9e0fa..0b9c911 100644 --- a/advtrains_luaautomation/atc_rail.lua +++ b/advtrains_luaautomation/atc_rail.lua @@ -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 -- cgit v1.2.3