diff options
author | Y. Wang <yw05@forksworld.de> | 2022-04-13 12:54:58 +0200 |
---|---|---|
committer | Y. Wang <yw05@forksworld.de> | 2022-04-13 15:50:05 +0200 |
commit | d794e382b59bb42888f3fb9b1d61f6ac6f7e2bdb (patch) | |
tree | f6515492f8fb4c614acd29e7c733b7058b33a02a /advtrains_interlocking/signal_api.lua | |
parent | 2f1be2b03e98713ee496da336b8264cdbc8c19b4 (diff) | |
download | advtrains-d794e382b59bb42888f3fb9b1d61f6ac6f7e2bdb.tar.gz advtrains-d794e382b59bb42888f3fb9b1d61f6ac6f7e2bdb.tar.bz2 advtrains-d794e382b59bb42888f3fb9b1d61f6ac6f7e2bdb.zip |
Primitive (not fully tested) support for route signaling
Diffstat (limited to 'advtrains_interlocking/signal_api.lua')
-rw-r--r-- | advtrains_interlocking/signal_api.lua | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/advtrains_interlocking/signal_api.lua b/advtrains_interlocking/signal_api.lua index 78acc0a..e4b2993 100644 --- a/advtrains_interlocking/signal_api.lua +++ b/advtrains_interlocking/signal_api.lua @@ -220,6 +220,10 @@ function advtrains.interlocking.signal_set_aspect(pos, asp) local node=advtrains.ndb.get_node(pos) local ndef=minetest.registered_nodes[node.name] if ndef and ndef.advtrains and ndef.advtrains.set_aspect then + local suppasp = advtrains.interlocking.signal_get_supported_aspects(pos) + if suppasp.type == 2 then + asp = advtrains.interlocking.aspects.type1_to_type2main(asp, suppasp.group) + end ndef.advtrains.set_aspect(pos, node, asp) advtrains.interlocking.signal_on_aspect_changed(pos) end @@ -252,7 +256,7 @@ function advtrains.interlocking.signal_rc_handler(pos, node, player, itemstack, local function callback(pname, aspect) advtrains.interlocking.signal_set_aspect(pos, aspect) end - local isasp = ndef.advtrains.get_aspect(pos, node) + local isasp = advtrains.interlocking.signal_get_aspect(pos, node) advtrains.interlocking.show_signal_aspect_selector( pname, @@ -285,8 +289,13 @@ function advtrains.interlocking.signal_get_aspect(pos) local ndef=minetest.registered_nodes[node.name] if ndef and ndef.advtrains and ndef.advtrains.get_aspect then local asp = ndef.advtrains.get_aspect(pos, node) + local suppasp = advtrains.interlocking.signal_get_supported_aspects(pos) + if suppasp.type == 2 then + asp = advtrains.interlocking.aspects.type2main_to_type1(suppasp.group, asp) + end if not asp then asp = DANGER end - return convert_aspect_if_necessary(asp) + asp = convert_aspect_if_necessary(asp) + return asp end return nil end |