summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--durt/init_code.lua33
-rw-r--r--durt/nodes/(-1440,11,-2580).lua1
-rw-r--r--durt/nodes/(-1515,11,-2588).lua7
3 files changed, 40 insertions, 1 deletions
diff --git a/durt/init_code.lua b/durt/init_code.lua
index 2cd41c9..85776a4 100644
--- a/durt/init_code.lua
+++ b/durt/init_code.lua
@@ -23,6 +23,39 @@ if event.init then
S.yards = S.yards or list_of_yards
end
+F.remove_rc = function(rc_list,arrow_mode)
+ -- rc_list MUST be a table of rc codes to remove
+ -- eg: {"rc1","rc2"}
+ -- Arrow Modes:
+ -- true: with arrow direction
+ -- false: against arrow direction
+ -- nil: ignores arrow direction
+
+ if not event.train then return end
+ if (arrow_mode == nil) or (atc_arrow == arrow_mode) then
+ local rc = get_rc() or ""
+ rc_list = rc_list or {}
+
+ -- ensure rc-remove table can be read
+ local rc_remove = {}
+ for _,v in pairs(rc_list) do
+ rc_remove[v] = true
+ end
+
+ -- remove codes from train's rc
+ local reinsert = {}
+ for token in rc:gmatch("[^%s]+") do
+ if not rc_remove[token] then
+ table.insert(reinsert,token)
+ end
+ end
+
+ -- insert new string to train's rc
+ rc = table.concat(reinsert," ")
+ set_rc(rc)
+ end
+end
+
F.yard_road_count = function(yard,section_id,monitoring_light) if not S.yards[yard][section_id] then S.yards[yard][section_id] = {['car_count'] = 0} end local car_count = S.yards[yard][section_id].car_count if event.train then if atc_arrow then --arrow points into section, add to length car_count = car_count + train_length() else -- subtract from car_count = car_count - train_length() end if car_count > 0 then -- light = on setstate(monitoring_light,"on") else car_count = 0 setstate(monitoring_light,"off") end S.yards[yard][section_id].car_count = car_count end end
diff --git a/durt/nodes/(-1440,11,-2580).lua b/durt/nodes/(-1440,11,-2580).lua
new file mode 100644
index 0000000..57b5d9c
--- /dev/null
+++ b/durt/nodes/(-1440,11,-2580).lua
@@ -0,0 +1 @@
+F.remove_rc({"S27_EXIT","S27_test"},true) \ No newline at end of file
diff --git a/durt/nodes/(-1515,11,-2588).lua b/durt/nodes/(-1515,11,-2588).lua
index 7352032..b3a645f 100644
--- a/durt/nodes/(-1515,11,-2588).lua
+++ b/durt/nodes/(-1515,11,-2588).lua
@@ -1 +1,6 @@
-if event.train and atc_arrow then if S.yards.S27.shunt_type == false then --reverse around loop. player not present to supervise autocouple operation local rc = get_rc() or "" local action = 0 local rc_list = {} for token in rc:gmatch("[^%s]+") do if token=="S27_LOOP" then action = 1 else table.insert(rc_list,token) end end if action == 0 then rc = rc.." S27_LOOP" else rc = table.concat(rc_list," ").." S27_EXIT" end set_rc(rc) atc_set_ars_disable(false) atc_send("B0WRD1S3") return end end \ No newline at end of file
+if event.train and atc_arrow then
+ atc_set_ars_disable(false)
+ atc_send("S3")
+ set_rc(get_rc().." S27_EXIT")
+ return
+end \ No newline at end of file