aboutsummaryrefslogtreecommitdiff
path: root/advtrains_interlocking/signal_api.lua
diff options
context:
space:
mode:
authororwell <orwell@bleipb.de>2024-05-24 00:00:12 +0200
committerorwell <orwell@bleipb.de>2024-05-24 00:00:12 +0200
commitf52653209aecb2310c1fb9598391c86113296f27 (patch)
tree2fba34771edf587e21a666ec0c59fce3d03ca937 /advtrains_interlocking/signal_api.lua
parenteb029711534006f73624a64c30f7a8597209ceec (diff)
downloadadvtrains-route_prog_rework.tar.gz
advtrains-route_prog_rework.tar.bz2
advtrains-route_prog_rework.zip
Fix working of the legacy signals under new systemroute_prog_rework
Diffstat (limited to 'advtrains_interlocking/signal_api.lua')
-rw-r--r--advtrains_interlocking/signal_api.lua15
1 files changed, 9 insertions, 6 deletions
diff --git a/advtrains_interlocking/signal_api.lua b/advtrains_interlocking/signal_api.lua
index 7826d30..6f52816 100644
--- a/advtrains_interlocking/signal_api.lua
+++ b/advtrains_interlocking/signal_api.lua
@@ -272,14 +272,14 @@ local function cache_mainaspects(ndefat)
end
function signal.get_aspect_internal(pos, aspt)
- if not aspt then
- -- oh, no main aspect, nevermind
- return signal.MASP_HALT, nil, nil
- end
atdebug("get_aspect_internal",pos,aspt)
-- look aspect in nodedef
local node = advtrains.ndb.get_node_or_nil(pos)
local ndef = node and minetest.registered_nodes[node.name]
+ if not aspt then
+ -- oh, no main aspect, nevermind
+ return signal.MASP_HALT, nil, node, ndef
+ end
local ndefat = ndef and ndef.advtrains
if ndefat and ndefat.apply_aspect then
-- only if signal defines main aspect and its set in aspt
@@ -318,7 +318,9 @@ function signal.get_aspect_info(pos)
local masp, remote, node, ndef = signal.get_aspect_internal(pos, aspt)
-- call into ndef
if ndef.advtrains and ndef.advtrains.get_aspect_info then
- return ndef.advtrains.get_aspect_info(pos, masp)
+ local ai = ndef.advtrains.get_aspect_info(pos, masp)
+ atdebug(pos,"aspectinfo",ai)
+ return ai
end
end
@@ -333,11 +335,12 @@ function signal.reapply_aspect(pts)
-- get aspt
local aspt = signal.aspects[pts]
atdebug("reapply_aspect",advtrains.decode_pos(pts),"aspt",aspt)
+ local pos = advtrains.decode_pos(pts)
if not aspt then
+ signal.notify_trains(pos)
return -- oop, nothing to do
end
-- resolve mainaspect table by name
- local pos = advtrains.decode_pos(pts)
local masp, remote, node, ndef = signal.get_aspect_internal(pos, aspt)
-- if we have remote, resolve remote
local rem_masp, rem_aspi