From 2976bae4522a1682808db55473d9f824c7155cc6 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Thu, 24 Jan 2019 13:43:22 +0100 Subject: [PATCH] Point speed restriction rails --- advtrains/trainlogic.lua | 4 +- advtrains_interlocking/database.lua | 6 ++ advtrains_interlocking/init.lua | 1 + .../textures/advtrains_dtrack_npr_placer.png | Bin 0 -> 1238 bytes .../textures/advtrains_dtrack_shared_npr.png | Bin 0 -> 3176 bytes advtrains_interlocking/tsr_rail.lua | 54 ++++++++++++++++++ advtrains_line_automation/init.lua | 24 +++++++- 7 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 advtrains_interlocking/textures/advtrains_dtrack_npr_placer.png create mode 100644 advtrains_interlocking/textures/advtrains_dtrack_shared_npr.png create mode 100644 advtrains_interlocking/tsr_rail.lua diff --git a/advtrains/trainlogic.lua b/advtrains/trainlogic.lua index 94d5980..ad51c42 100644 --- a/advtrains/trainlogic.lua +++ b/advtrains/trainlogic.lua @@ -474,8 +474,8 @@ function advtrains.train_step_b(id, train, dtime) local pdist = train.path_dist[math.floor(train.index)] or 1 local distance = (train.velocity*dtime) / pdist - --TODO debugging code - train.debug = atdump(train.ctrl).."step_dist: "..math.floor(distance*1000) + --debugging code + --train.debug = atdump(train.ctrl).."step_dist: "..math.floor(distance*1000) train.index=train.index+distance diff --git a/advtrains_interlocking/database.lua b/advtrains_interlocking/database.lua index 4aaa4c4..ba2a318 100644 --- a/advtrains_interlocking/database.lua +++ b/advtrains_interlocking/database.lua @@ -105,6 +105,8 @@ local signal_assignments = {} -- track+direction -> signal position local influence_points = {} +advtrains.interlocking.npr_rails = {} + function ildb.load(data) if not data then return end @@ -126,6 +128,9 @@ function ildb.load(data) if data.influence_points then influence_points = data.influence_points end + if data.npr_rails then + advtrains.interlocking.npr_rails = data.npr_rails + end end function ildb.save() @@ -136,6 +141,7 @@ function ildb.save() rs_locks = advtrains.interlocking.route.rte_locks, rs_callbacks = advtrains.interlocking.route.rte_callbacks, influence_points = influence_points, + npr_rails = advtrains.interlocking.npr_rails, } end diff --git a/advtrains_interlocking/init.lua b/advtrains_interlocking/init.lua index aa498df..37f962b 100644 --- a/advtrains_interlocking/init.lua +++ b/advtrains_interlocking/init.lua @@ -24,6 +24,7 @@ dofile(modpath.."tool.lua") dofile(modpath.."lzb.lua") dofile(modpath.."ars.lua") +dofile(modpath.."tsr_rail.lua") minetest.register_privilege("interlocking", {description = "Can set up track sections, routes and signals.", give_to_singleplayer = true}) diff --git a/advtrains_interlocking/textures/advtrains_dtrack_npr_placer.png b/advtrains_interlocking/textures/advtrains_dtrack_npr_placer.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1c7694ca19be3f4454eeaec1de847c6f700244 GIT binary patch literal 1238 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, + platform = , + doors = + wait = + signal = + }]] + stops = {}, +} local modpath = minetest.get_modpath(minetest.get_current_modname()) .. DIR_DELIM @@ -9,9 +21,15 @@ dofile(modpath.."stoprail.lua") function advtrains.lines.load(data) - + if data then + advtrains.lines.stations = data.stations or {} + advtrains.lines.stops = data.stops or {} + end end function advtrains.lines.save() - return {} + return { + stations = advtrains.lines.stations, + stops = advtrains.lines.stops + } end