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_interlocking/depends.txt | 3 +- advtrains_interlocking/tsr_rail.lua | 23 +++++----- advtrains_line_automation/depends.txt | 2 +- advtrains_line_automation/stoprail.lua | 23 +++++----- advtrains_luaautomation/active_common.lua | 7 +++ advtrains_luaautomation/atc_rail.lua | 71 ++++++++++++++----------------- 6 files changed, 66 insertions(+), 63 deletions(-) diff --git a/advtrains_interlocking/depends.txt b/advtrains_interlocking/depends.txt index 6f00bf6..fdf6b17 100644 --- a/advtrains_interlocking/depends.txt +++ b/advtrains_interlocking/depends.txt @@ -1 +1,2 @@ -advtrains \ No newline at end of file +advtrains +advtrains_train_track? \ No newline at end of file diff --git a/advtrains_interlocking/tsr_rail.lua b/advtrains_interlocking/tsr_rail.lua index 89da290..a500c8f 100644 --- a/advtrains_interlocking/tsr_rail.lua +++ b/advtrains_interlocking/tsr_rail.lua @@ -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 \ No newline at end of file diff --git a/advtrains_line_automation/depends.txt b/advtrains_line_automation/depends.txt index 53500ee..ce2e23c 100644 --- a/advtrains_line_automation/depends.txt +++ b/advtrains_line_automation/depends.txt @@ -1,2 +1,2 @@ advtrains_interlocking -advtrains_train_track \ No newline at end of file +advtrains_train_track? \ No newline at end of file diff --git a/advtrains_line_automation/stoprail.lua b/advtrains_line_automation/stoprail.lua index 0990876..ee8faac 100644 --- a/advtrains_line_automation/stoprail.lua +++ b/advtrains_line_automation/stoprail.lua @@ -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 \ No newline at end of file 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