summaryrefslogtreecommitdiff
path: root/durt
diff options
context:
space:
mode:
authorautocommitter <autocommitter@linux-forks.de>2024-04-22 14:56:19 +0200
committerautocommitter <autocommitter@linux-forks.de>2024-04-22 14:56:19 +0200
commitccbca355d411168e66c025598c0ab65b23ef0423 (patch)
tree5c39754483e7413687d23d392f9f6d62e1ec8fea /durt
parent68131f27640e9bdb6d67c914d354d5fd67675a99 (diff)
downloadluaatc_envs-ccbca355d411168e66c025598c0ab65b23ef0423.tar.gz
luaatc_envs-ccbca355d411168e66c025598c0ab65b23ef0423.tar.bz2
luaatc_envs-ccbca355d411168e66c025598c0ab65b23ef0423.zip
State at 2022-02-26
Diffstat (limited to 'durt')
-rw-r--r--durt/init_code.lua312
-rw-r--r--durt/nodes/(-2080,3,822).lua14
2 files changed, 311 insertions, 15 deletions
diff --git a/durt/init_code.lua b/durt/init_code.lua
index 1cc815b..3919aa7 100644
--- a/durt/init_code.lua
+++ b/durt/init_code.lua
@@ -1,4 +1,206 @@
-S.lines = { S23 = { termini = { N = "Arc", S = "Rew" }, stations = { Rew = { name = "Redwood", doors = "L", next_station = { N = "Thc", S = false }, }, Thc = { name = "Tanh Cliffs", doors = "L", next_station = { N = "Noi", S = "Rew" }, }, Noi = { name = "No Idea", doors = "L", next_station = { N = "Lzf", S = "Thc" }, }, Lzf = { name = "Laza's Field", doors = "L", next_station = { N = "Bbh", S = "Noi" }, }, Bbh = { name = "Bamboo Hills", doors = "L", next_station = { N = "Arc", S = "Lzf" }, }, Arc = { name = "Arcadius", doors = "L", next_station = { N = false, S = "Bbh" }, } }, monitoring = { N = {}, S = {} } }, U21 = { termini = { E = "Tro", W = "Dbl" }, stations = { Dbl = { name = "Dubulti", doors = "R", next_station = { E = "Pav", W = "Ghd" } }, Pav = { name = "Pence Avenue", doors = "L", next_station = { E = "Ghd", W = "Dbl" } }, Ghd = { name = "Greenhat Mountain", doors = "L", next_station = { E = "Acm", W = "Dbl" } }, Acm = { name = "Acacia Mountains", doors = "L", next_station = { E = "Ghb", W = "Ghd" } }, Ghb = { name = "Green Hill Beach", doors = "L", next_station = { E = "Ged", W = "Acm" } }, Ged = { name = "Green Edge", doors = "L", next_station = { E = "Dri", W = "Ghb" } }, Dri = { name = "Dry Island", doors = "L", next_station = { E = "Gcl", W = "Ged" } }, Gcl = { name = "Green Cliffs", doors = "R", next_station = { E ="Sfs", W = "Dri" } }, Sfs = { name = "South Forest", doors = "R", next_station = { E = "Jms", W = "Gcl" } }, Jms = { name = "Jude Milhon Street", doors = "R", next_station = { E = "Bam", W = "Sfs" } }, Bam = { name = "Bamboo Hills", doors = "R", next_station = { E = "Cli", W = "Jms" } }, Cli = { name = "Clown Island", doors = "R", next_station = { E = "Wat", W = "Bam" } }, Wat = { name = "Something in the Water", doors = "L", next_station = { E = "Duf", W = "Cli" } }, Duf = { name = "Duff Rd", doors = "R", next_station = { E = "Tro", W = "Wat" } }, Tro = { name = "Turtle Rock", doors = "L", next_station = { E = false, W = "Duf" }, } }, monitoring = { E = {}, W = {}, S = {}, N = {} } } } S.runarounds = { ["TheStacks"] = {}, ["M27_Quarry_runaround"] = {}, ["M27_Breaker_Factory"] = {}, ["DJnc_4"] = {}, }
+S.lines = {
+ S23 = {
+ termini = {
+ N = "Arc",
+ S = "Rew"
+ },
+ stations = {
+ Rew = {
+ name = "Redwood",
+ doors = "L",
+ next_station = {
+ N = "Thc",
+ S = false
+ },
+ },
+ Thc = {
+ name = "Tanh Cliffs",
+ doors = "L",
+ next_station = {
+ N = "Noi",
+ S = "Rew"
+ },
+ },
+ Noi = {
+ name = "No Idea",
+ doors = "L",
+ next_station = {
+ N = "Lzf",
+ S = "Thc"
+ },
+ },
+ Lzf = {
+ name = "Laza's Field",
+ doors = "L",
+ next_station = {
+ N = "Bbh",
+ S = "Noi"
+ },
+ },
+ Bbh = {
+ name = "Bamboo Hills",
+ doors = "L",
+ next_station = {
+ N = "Arc",
+ S = "Lzf"
+ },
+ },
+ Arc = {
+ name = "Arcadius",
+ doors = "L",
+ next_station = {
+ N = false,
+ S = "Bbh"
+ },
+ }
+ },
+ monitoring = {
+ N = {},
+ S = {}
+ }
+ },
+ U21 = {
+ termini = {
+ E = "Tro",
+ W = "Dbl"
+ },
+ stations = {
+ Dbl = {
+ name = "Dubulti",
+ doors = "R",
+ next_station = {
+ E = "Pav",
+ W = "Ghd"
+ }
+ },
+ Pav = {
+ name = "Pence Avenue",
+ doors = "L",
+ next_station = {
+ E = "Ghd",
+ W = "Dbl"
+ }
+ },
+ Ghd = {
+ name = "Greenhat Mountain",
+ doors = "L",
+ next_station = {
+ E = "Acm",
+ W = "Dbl"
+ }
+ },
+ Acm = {
+ name = "Acacia Mountains",
+ doors = "L",
+ next_station = {
+ E = "Ghb",
+ W = "Ghd"
+ }
+ },
+ Ghb = {
+ name = "Green Hill Beach",
+ doors = "L",
+ next_station = {
+ E = "Ged",
+ W = "Acm"
+ }
+ },
+ Ged = {
+ name = "Green Edge",
+ doors = "L",
+ next_station = {
+ E = "Dri",
+ W = "Ghb"
+ }
+ },
+ Dri = {
+ name = "Dry Island",
+ doors = "L",
+ next_station = {
+ E = "Gcl",
+ W = "Ged"
+ }
+ },
+ Gcl = {
+ name = "Green Cliffs",
+ doors = "R",
+ next_station = {
+ E ="Sfs",
+ W = "Dri"
+ }
+ },
+ Sfs = {
+ name = "South Forest",
+ doors = "R",
+ next_station = {
+ E = "Jms",
+ W = "Gcl"
+ }
+ },
+ Jms = {
+ name = "Jude Milhon Street",
+ doors = "R",
+ next_station = {
+ E = "Bam",
+ W = "Sfs"
+ }
+ },
+ Bam = {
+ name = "Bamboo Hills",
+ doors = "R",
+ next_station = {
+ E = "Cli",
+ W = "Jms"
+ }
+ },
+ Cli = {
+ name = "Clown Island",
+ doors = "R",
+ next_station = {
+ E = "Wat",
+ W = "Bam"
+ }
+ },
+ Wat = {
+ name = "Something in the Water",
+ doors = "L",
+ next_station = {
+ E = "Duf",
+ W = "Cli"
+ }
+ },
+ Duf = {
+ name = "Duff Rd",
+ doors = "R",
+ next_station = {
+ E = "Tro",
+ W = "Wat"
+ }
+ },
+ Tro = {
+ name = "Turtle Rock",
+ doors = "L",
+ next_station = {
+ E = false,
+ W = "Duf"
+ },
+ }
+ },
+ monitoring = {
+ E = {},
+ W = {},
+ S = {},
+ N = {}
+ }
+ }
+}
+
+S.runarounds = {
+ ["TheStacks"] = {},
+ ["M27_Quarry_runaround"] = {},
+ ["M27_Breaker_Factory"] = {},
+ ["DJnc_4"] = {},
+}
---------------------------------------------------------------------
@@ -8,10 +210,18 @@ S.M27_tracking = {}
-- -4003,12,-2766 Between Alieane and Trojan
-- -3766,15,-3562 EV_Beach<->Sinensis
-- -3592,18,-3907 Sinensis<->Willow Tunnel
--- -3602,18,-3961 Willow Tunnel <-> Djnc -- -3602.18.-3961 Djnc<->Dcaves
--- -2345,15,-1336 Tanh Depot -- -1986,13,-1699 x2 Foundry entry
+-- -3602,18,-3961 Willow Tunnel <-> Djnc
+-- -3602.18.-3961 Djnc<->Dcaves
+-- -2345,15,-1336 Tanh Depot
+-- -1986,13,-1699 x2 Foundry entry
-F.M27_tracking = function(id) if not event.train then return end local rc = get_rc() or "" if not rc:match("M27_tracking") then return end S.M27_tracking.last = S.M27_tracking.now S.M27_tracking.now = id end
+F.M27_tracking = function(id)
+ if not event.train then return end
+ local rc = get_rc() or ""
+ if not rc:match("M27_tracking") then return end
+ S.M27_tracking.last = S.M27_tracking.now
+ S.M27_tracking.now = id
+end
--Atlac Yard Operations
if event.init then
@@ -39,7 +249,6 @@ F.remove_rc = function(rc_list,arrow_mode)
if (arrow_mode == nil) or (atc_arrow == arrow_mode) then
local rc = F.get_rc_safe()
rc_list = rc_list or {}
-
-- ensure rc-remove table can be read
local rc_remove = {}
for _,v in pairs(rc_list) do
@@ -53,14 +262,34 @@ F.remove_rc = function(rc_list,arrow_mode)
table.insert(reinsert,token)
end
end
-
-- insert new string to train's rc
- rc = table.concat(reinsert," ")
- set_rc(rc)
+ set_rc(table.concat(reinsert," "))
end
+ return reinsert
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
+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
--stats counter from subway/il_timetable
@@ -105,4 +334,67 @@ if atc_id == reftrain then
end
end
end
- --------------------------------------------------------------------- --defining the functions F.arrive = function(stn_code,dir,line) S.lines[line].monitoring[dir][stn_code] = atc_id atc_send("B0 W O"..S.lines[line].stations[stn_code].doors) atc_set_text_inside("Arrived at:\n"..S.lines[line].stations[stn_code].name.."\n \nNext Station:\n"..S.lines[line].stations[S.lines[line].stations[stn_code].next_station[dir]].name) end F.depart = function(stn_code,dir,line) local pos = stn_code..dir local inside_text = "Next Stop:\n"..S.lines[line].stations[S.lines[line].stations[stn_code].next_station[dir]].name if can_set_route(pos,stn_code.."->"..S.lines[line].stations[stn_code].next_station[dir]) then set_route(pos,stn_code.."->"..S.lines[line].stations[stn_code].next_station[dir]) atc_send("OC SM") S.lines[line].monitoring[dir][stn_code] = nil S.lines[line].monitoring[dir][S.lines[line].stations[stn_code].next_station[dir]] = atc_id else -- Wait another 5s before trying again inside_text = inside_text.."\nWaiting to depart..." interrupt(5, "depart") end atc_set_text_inside(inside_text) end F.set_desto = function(dir, line) atc_set_text_outside("LINE " .. line .."\n---> " .. S.lines[line].stations[S.lines[line].termini[dir]].name) end --------------------------------------------------------------------- --LuaATC track functions F.station = function(stn_code,dir,line) -- temp until all SF LuaAtc tracks are changed------------------------- if line == nil or line == "1" then line = "U21" end --------------------------------------------------------------------- if event.train then F.arrive(stn_code,dir,line) interrupt(10,"depart") elseif event.int and event.msg=="depart" then F.depart(stn_code,dir,line) end end F.terminus = function(stn_code, newdir, line) if event.train then S.lines[line].monitoring[newdir][stn_code] = atc_id atc_send("B0 W R O"..S.lines[line].stations[stn_code].doors) atc_set_text_inside("Arrived at:\n"..S.lines[line].stations[stn_code].name.."\n \nNext Station:\n"..S.lines[line].stations[S.lines[line].stations[stn_code].next_station[newdir]].name) atc_set_text_outside("LINE " .. line .."\n---> " .. S.lines[line].stations[S.lines[line].termini[newdir]].name) interrupt(10, "depart") end if event.int and event.msg == "depart" then F.depart(stn_code, newdir,line) end end \ No newline at end of file
+
+---------------------------------------------------------------------
+--defining the functions
+
+F.arrive = function(stn_code,dir,line)
+ S.lines[line].monitoring[dir][stn_code] = atc_id
+ atc_send("B0 W O"..S.lines[line].stations[stn_code].doors)
+ atc_set_text_inside("Arrived at:\n"..S.lines[line].stations[stn_code].name.."\n \nNext Station:\n"..S.lines[line].stations[S.lines[line].stations[stn_code].next_station[dir]].name)
+end
+
+F.depart = function(stn_code,dir,line)
+ local pos = stn_code..dir
+ local inside_text = "Next Stop:\n"..S.lines[line].stations[S.lines[line].stations[stn_code].next_station[dir]].name
+ if can_set_route(pos,stn_code.."->"..S.lines[line].stations[stn_code].next_station[dir]) then
+ set_route(pos,stn_code.."->"..S.lines[line].stations[stn_code].next_station[dir])
+ atc_send("OC SM")
+ S.lines[line].monitoring[dir][stn_code] = nil
+ S.lines[line].monitoring[dir][S.lines[line].stations[stn_code].next_station[dir]] = atc_id
+ else
+ -- Wait another 5s before trying again
+ inside_text = inside_text.."\nWaiting to depart..."
+ interrupt(5, "depart")
+ end
+ atc_set_text_inside(inside_text)
+end
+
+F.set_desto = function(dir, line)
+ atc_set_text_outside("LINE " .. line .."\n---> " .. S.lines[line].stations[S.lines[line].termini[dir]].name)
+end
+
+---------------------------------------------------------------------
+--LuaATC track functions
+
+F.station = function(stn_code,dir,line)
+
+-- temp until all SF LuaAtc tracks are changed-------------------------
+ if line == nil or line == "1" then
+ line = "U21"
+ end
+---------------------------------------------------------------------
+
+ if event.train then
+ F.arrive(stn_code,dir,line)
+ interrupt(10,"depart")
+ elseif event.int and event.msg=="depart" then
+ F.depart(stn_code,dir,line)
+ end
+end
+
+
+F.terminus = function(stn_code, newdir, line)
+ if event.train then
+ S.lines[line].monitoring[newdir][stn_code] = atc_id
+
+ atc_send("B0 W R O"..S.lines[line].stations[stn_code].doors)
+ atc_set_text_inside("Arrived at:\n"..S.lines[line].stations[stn_code].name.."\n \nNext Station:\n"..S.lines[line].stations[S.lines[line].stations[stn_code].next_station[newdir]].name)
+
+ atc_set_text_outside("LINE " .. line .."\n---> " .. S.lines[line].stations[S.lines[line].termini[newdir]].name)
+ interrupt(10, "depart")
+ end
+ if event.int and event.msg == "depart" then
+ F.depart(stn_code, newdir,line)
+ end
+end \ No newline at end of file
diff --git a/durt/nodes/(-2080,3,822).lua b/durt/nodes/(-2080,3,822).lua
index 26904d3..d450d7d 100644
--- a/durt/nodes/(-2080,3,822).lua
+++ b/durt/nodes/(-2080,3,822).lua
@@ -1,20 +1,24 @@
local indicator = POS(-2080,6,826)
-local rc = (get_rc() or "")
+local rc = (get_rc or "")
+local shunting_rc = {"ArcLoad_split","ArcLoad_around","ArcLoad_rejoin"}
-if rc:match("ArcLoad_NOSHUNT") then return end
+if type(rc) == "string" then rc = function() return "" end end
+if rc():match("ArcLoad_NOSHUNT") then return end
if event.train and atc_arrow then
+ print(get_rc())
if getstate(indicator) == "green" then
- F.remove_rc({"ArcLoad_split","ArcLoad_around","ArcLoad_rejoin"},true)
+ F.remove_rc(shunting_rc,true)
atc_send("S0WRD1A1S2D10SM")
setstate(indicator,"red")
- set_rc(rc.." ArcLoad_exit")
+ set_rc(rc().." ArcLoad_exit")
else
local o_text = atc_get_text_outside() or ""
atc_set_text_outside("Waiting for Locomotive")
split_off_locomotive("A0B0",1)
atc_set_text_outside(o_text)
- set_rc(rc.." ArcLoad_split ArcLoad_around ArcLoad_rejoin")
+ set_rc(rc().." "..table.concat(shunting_rc," "))
setstate(indicator,"green")
end
+ print(get_rc())
end \ No newline at end of file