48 lines
1.7 KiB
Lua
48 lines
1.7 KiB
Lua
local reader = peripheral.find("blockReader")
|
|
if not reader then
|
|
print("Error: Block Reader not found!")
|
|
return
|
|
end
|
|
|
|
while true do
|
|
term.clear()
|
|
term.setCursorPos(1,1)
|
|
print("=== CRN Advanced Display Parser ===")
|
|
|
|
local success, data = pcall(reader.getBlockData)
|
|
|
|
if success and data and data.TrainStops then
|
|
local now = os.epoch("utc") / 50
|
|
|
|
for i, stop in ipairs(data.TrainStops) do
|
|
local st = stop.Station
|
|
if st then
|
|
local trainName = st.TrainName or "Unknown"
|
|
local dest = st.Destination or "Unknown"
|
|
|
|
-- 时间计算
|
|
local scheduledArrival = st.ScheduledArrival or 0
|
|
local realArrival = st.RealTimeArrival or 0
|
|
|
|
-- 计算 ETA (秒)
|
|
local etaTicks = realArrival - data.LastRefreshed
|
|
local etaSeconds = math.floor(etaTicks / 20)
|
|
if etaSeconds < 0 then etaSeconds = 0 end
|
|
|
|
-- 计算 Delay (分钟)
|
|
local delayTicks = realArrival - scheduledArrival
|
|
local delayMinutes = math.floor(delayTicks / (20 * 60))
|
|
if delayMinutes < 0 then delayMinutes = 0 end
|
|
|
|
print(string.format("[%d] Train: %s -> %s", i, trainName, dest))
|
|
print(string.format(" ETA: %d seconds", etaSeconds))
|
|
print(string.format(" Delay: %d minutes", delayMinutes))
|
|
print("---------------------------------")
|
|
end
|
|
end
|
|
else
|
|
print("Waiting for CRN data...")
|
|
end
|
|
|
|
os.sleep(1)
|
|
end |