diff options
Diffstat (limited to 'auto_yards')
-rw-r--r-- | auto_yards/nodes/(-1947,16,837).lua | 2 | ||||
-rw-r--r-- | auto_yards/nodes/(-2004,2,-1101).lua | 1 | ||||
-rw-r--r-- | auto_yards/nodes/(-2029,19,733).lua | 36 | ||||
-rw-r--r-- | auto_yards/nodes/(-2042,19,723).lua | 8 | ||||
-rw-r--r-- | auto_yards/nodes/(783,10,-57).lua | 2 | ||||
-rw-r--r-- | auto_yards/nodes/(785,10,40).lua | 2 | ||||
-rw-r--r-- | auto_yards/nodes/(794,10,31).lua | 46 | ||||
-rw-r--r-- | auto_yards/nodes/(796,10,-54).lua | 47 |
8 files changed, 128 insertions, 16 deletions
diff --git a/auto_yards/nodes/(-1947,16,837).lua b/auto_yards/nodes/(-1947,16,837).lua index 0a82dfd..5e2841b 100644 --- a/auto_yards/nodes/(-1947,16,837).lua +++ b/auto_yards/nodes/(-1947,16,837).lua @@ -1,2 +1,2 @@ -S.yards.ARC.notify = {['S27_EXPORT'] = true} +S.yards.ARC.notify = {['S27'] = true} print(S.yards.ARC.notify)
\ No newline at end of file diff --git a/auto_yards/nodes/(-2004,2,-1101).lua b/auto_yards/nodes/(-2004,2,-1101).lua index c0d57ae..031f395 100644 --- a/auto_yards/nodes/(-2004,2,-1101).lua +++ b/auto_yards/nodes/(-2004,2,-1101).lua @@ -10,6 +10,7 @@ local subs = { ]]-- ['ARC'] = {['pos'] = POS(-1973,16,800), ['msg'] = "notify"}, + ['NOID'] = {['pos'] = POS(-2204,8,-676), ['msg'] = "notify"}, } if event.ext_int or event.punch then diff --git a/auto_yards/nodes/(-2029,19,733).lua b/auto_yards/nodes/(-2029,19,733).lua index 58ed28c..afbb94b 100644 --- a/auto_yards/nodes/(-2029,19,733).lua +++ b/auto_yards/nodes/(-2029,19,733).lua @@ -1,28 +1,36 @@ local yard_id = "ARC" + +__approach_callback_mode = 1 +if event.approach and not event.has_entered then --disable ARS for all approaching trains + atc_set_ars_disable(true) + atc_set_lzb_tsr(1) + return +end + if event.train then - -- direct train to the headshunt to reenter the yard if F.has_rc("ARC_YARD_REENTRY") then -- loco will use S23-S approach track as headshunt and re-enter yard -- RC will be removed by the headshunt controller (req to trigger it) -- manually set the route here before ARS has a chance set_route(POS(-2033,21,731),"Yard Reentry (LENGTH LIMIT)") - -- defer re-enabling ARS to ensure the route has been accepted, if not set + F.indicator(S.yards[yard_id].active_indicator_pos,false) + + -- Extract the second exit director from ARC_2nd_EXIT_x and insert if available + -- should be safe to add it now as the route has already been set to reenter the yard first + local rc = F.get_rc_safe():match("ARC_2ND_EXIT_(%S+)") + print("Second Exit RC: "..tostring(rc)) + if rc then + F.remove_rc_match("ARC_2ND_EXIT_%S+") + F.add_rc(rc) + print(F.get_rc_safe()) + end + + -- defer re-enabling ARS to ensure the route has been accepted, or at least queued atc_send("S4D1A1") - return + return end - -- deal with ARC_2nd_EXIT_rc - local rc = F.get_rc_safe():match("ARC_2ND_EXIT_(%S+)") - print(rc) - if rc then - F.remove_rc_match("ARC_2ND_EXIT_%S+") - F.add_rc(rc) - print(F.get_rc_safe()) - atc_set_ars_disable(false) - atc_send("SM") - return - end -- disregard light exit locos if F.has_rc(yard_id.."_LIGHT_EXIT") then F.remove_rc(yard_id.."_LIGHT_EXIT") diff --git a/auto_yards/nodes/(-2042,19,723).lua b/auto_yards/nodes/(-2042,19,723).lua new file mode 100644 index 0000000..a0d12bd --- /dev/null +++ b/auto_yards/nodes/(-2042,19,723).lua @@ -0,0 +1,8 @@ +if event.train and atc_arrow then + F.remove_rc_match("ARC_LOCOS_%S+") + F.remove_rc_match("ARC_WAGONS_%S+") + F.remove_rc({ + "ARC_DEPART", + "ARC_FINAL_COLLECT" + }) +end
\ No newline at end of file diff --git a/auto_yards/nodes/(783,10,-57).lua b/auto_yards/nodes/(783,10,-57).lua new file mode 100644 index 0000000..e56cc30 --- /dev/null +++ b/auto_yards/nodes/(783,10,-57).lua @@ -0,0 +1,2 @@ +if not F.has_rc("LEEK_EXIT") then return end +-- remove any extra yard RCs here
\ No newline at end of file diff --git a/auto_yards/nodes/(785,10,40).lua b/auto_yards/nodes/(785,10,40).lua new file mode 100644 index 0000000..e56cc30 --- /dev/null +++ b/auto_yards/nodes/(785,10,40).lua @@ -0,0 +1,2 @@ +if not F.has_rc("LEEK_EXIT") then return end +-- remove any extra yard RCs here
\ No newline at end of file diff --git a/auto_yards/nodes/(794,10,31).lua b/auto_yards/nodes/(794,10,31).lua new file mode 100644 index 0000000..f7e80a9 --- /dev/null +++ b/auto_yards/nodes/(794,10,31).lua @@ -0,0 +1,46 @@ +-- Automatic bouncer for headshunts, assuming longer headshunt than train length. Arrow points into headshunt +local rev_rc = "LEEK_HS_north" +local rm_rc = true +local autocouple = nil +local rm_cpl_rc = true + +__approach_callback_mode = 1 + +if event.approach and not event.has_entered then + if not F.has_rc(rev_rc) then return end + atc_set_lzb_tsr(3) + atc_set_ars_disable(true) + return +end + +if event.train then + if not atc_arrow then --train has bounced + if F.has_rc(autocouple) then + atc_send("CplS0WD2S1") + if rm_cpl_rc then F.remove_rc({autocouple}) end + end + return + end + + if not F.has_rc(rev_rc) then --not our train. disregard + atc_set_ars_disable(false) + return + end + atc_send("S3") + if rm_rc then F.remove_rc({rev_rc}) end + schedule_in(";01",atc_id) + return +end + +if event.schedule then + if not atc_id then --bounce the train that just passed + atc_send_to_train(event.msg,"B0WRD1A1S3") + else + if atc_id == event.msg then --train hasn't fully passed yet, wait a bit longer + schedule_in(";01",atc_id) + else -- somehow another train crossed the controller before the first one returned. Unlikely but possible + atc_send_to_train(event.msg,"BBOL") + atc_send("BBOL") + end + end +end
\ No newline at end of file diff --git a/auto_yards/nodes/(796,10,-54).lua b/auto_yards/nodes/(796,10,-54).lua index 7bf58f6..a3f3e42 100644 --- a/auto_yards/nodes/(796,10,-54).lua +++ b/auto_yards/nodes/(796,10,-54).lua @@ -1 +1,46 @@ --- headshunt
\ No newline at end of file +-- Automatic bouncer for headshunts, assuming longer headshunt than train length. Arrow points into headshunt +local rev_rc = "LEEK_HS_south" +local rm_rc = true +local autocouple = nil +local rm_cpl_rc = true + +__approach_callback_mode = 1 + +if event.approach and not event.has_entered then + if not F.has_rc(rev_rc) then return end + atc_set_lzb_tsr(3) + atc_set_ars_disable(true) + return +end + +if event.train then + if not atc_arrow then --train has bounced + if F.has_rc(autocouple) then + atc_send("CplS0WD2S1") + if rm_cpl_rc then F.remove_rc({autocouple}) end + end + return + end + + if not F.has_rc(rev_rc) then --not our train. disregard + atc_set_ars_disable(false) + return + end + atc_send("S3") + if rm_rc then F.remove_rc({rev_rc}) end + schedule_in(";01",atc_id) + return +end + +if event.schedule then + if not atc_id then --bounce the train that just passed + atc_send_to_train(event.msg,"B0WRD1A1S3") + else + if atc_id == event.msg then --train hasn't fully passed yet, wait a bit longer + schedule_in(";01",atc_id) + else -- somehow another train crossed the controller before the first one returned. Unlikely but possible + atc_send_to_train(event.msg,"BBOL") + atc_send("BBOL") + end + end +end
\ No newline at end of file |