User Tools

Site Tools


usage:atlatc:examples:tis:environment

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

usage:atlatc:examples:tis:environment [2022-06-28 12:09] (current)
56independent created
Line 1: Line 1:
 +====== Environment-Based Train Information System ======
 +===== Introduction =====
 +After the [[digilines]] system was used, a server admin thought it would be nicer to not have ugly blue wires all over the place, so decided to wirelessly transmit signals instead.
 +
 +The environment system uses the ''S'' table to convey information, which is then formatted locally.
 +
 +It calculates distance based on Co-ordinates.
 +
 +===== Explanations =====
 +Here, the code uses two seperate scripts. This makes the code a lot more bother to setup, but at least it is less bother then using Digilines.
 +
 +==== Collectors ====
 +The LuaATC tracks wait for a train to run over them, and check if the distance of the train is less then the previous train (this prevents later trains being registered earlier)
 +
 +The track extracts information, such as the LuaController's distance from an arbitrary point in the station,the length of the train, or the line.
 +
 +==== Display ====
 +The display refreshes every 2 seconds, putting the information with values from the table onto the board. If the information changes, then within 2 seconds the board changes.
 +
 +The skippingrc is set to the standard on 56i-mtserver, where C stands for "Chronic Skipper", which is a train stoppage class where trains only stop at select interchanges.
 +
 +===== Code =====
 +==== LuaATC tracks ====
 +<code lua>
 +placeTrack = POS(0,0,0) -- Co-ordinates for the track you are working on
 +placeStation = POS(0,0,0) -- Co-ordinates for a track of your choice in the station
 +
 +distance = math.sqrt((placeTrack.x-placeStation.x)^2+(placeTrack.y-placeStation.y)^2+(placeTrack.z-placeStation.z)^2) -- Comment this out if using a different distance calculation and have a raw number
 +-- distance = xx -- Uncomment this and fill in your number in place of xx if you have a raw number
 +
 +if event.type == "train" then
 +    if distance < F.tbl.distance then -- Show information for closer trains before further trains
 +        F.tbl = {
 +            distance = distance,
 +            length = train_length(), 
 +            line = get_line(), 
 +            rc = get_rc(), 
 +        }
 +    end
 +end
 +</code>
 +
 +==== Displayers ====
 +<code lua >
 +channel = "p1" -- Channel of displays for specific platform. Allows station-wide digline systems.
 +platform = "" -- Platform number
 +services = "" -- Services for the platform in line names (maybe "IPR, NX2" for Re platform 1 on 56i-mtserver).
 +skippingrc = "C" -- Put in the RC which means the train skips
 +
 +interrupt(2) -- Set in environment code.
 +
 +--[[
 +
 +{distance = distance, length = length, line = line, rc = rc, skipping = skipping}
 +
 +Table format for info
 +
 +Platform 3 - EW services
 +30 m Away, 6 cars
 +EW line, RC By
 +Stopping here
 +
 +Information shown
 +
 +]]--
 +    
 +if F.tbl.rc == skippingrc then
 +    stopping = "Skipping Station. Stand back"
 +else
 +    stopping = "Stopping Here."
 +end
 +   
 +
 +info = "Platform " .. platform .. " - " .. services .. " services" .. "\n" .. F.tbl.distance .. " m away, " .. F.tbl.length .. " cars" .. "\n" .. F.tbl.line .. " line, " .. F.tbl.rc .. "\n" .. stopping
 +
 +digiline_send(channel, info)
 +</code>
  
usage/atlatc/examples/tis/environment.txt · Last modified: 2022-06-28 12:09 by 56independent