1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
gl.setup(1680, 945)
json = require("json")
font = resource.load_font("light.ttf")
font2 = resource.load_font("light.ttf")
background = resource.load_image("whitepixel.png")
maxCharWidth = WIDTH/0.6
color = { r = 0.95, g = 0.95, b = 0.0 }
charSize = 82
function alignRight(num)
-- 0 1 2 3 4 5 6 7 8 9
local width = { 5, 30, 7, 5, 7, 15, 8, 5, 5, 5 }
local num1 = num % 10;
local num2 = math.floor(num / 10 % 10);
if num2 >= 1 then
return width[num1 + 1] + width[num2 + 1]
else
return width[num1 + 1] + 44
end
end
function node.render()
local i = 0
local station_json = json.decode(text)
background:draw(0, 0, WIDTH, HEIGHT/10)
background:draw(0, HEIGHT - HEIGHT/10, WIDTH, HEIGHT)
for k, stations in pairs(station_json) do
local station = stations[1]
width = math.floor(maxCharWidth/72/2 + string.len(station)/2)
font2:write(15, HEIGHT - charSize, station:gsub(" %(Berlin%)", ""), 72, 0,0,0, 1)
font2:write(15, 30, "Line Destination Departure", 64, 0,0,0,1)
i = i + 124
j = 0
for k, departures in pairs(stations[2]) do
local remaining = math.floor(departures['remaining']/60)
if remaining >= 5 and j < 8 then
j = j + 1
local timeString = string.format('%2d min', remaining)
font:write(WIDTH-440 + alignRight(remaining), i,
string.format('%14s', timeString),
charSize, color.r, color.g, color.b, 1)
font:write(0, i,
string.format(' %-5s',
departures['line']:gsub("Bus ", "")),
charSize, color.r, color.g, color.b, 1)
font:write(250, i,
string.format(' %-32s',
departures['end']:gsub("-", '—'):gsub('%(Berlin%)', '')),
charSize, color.r, color.g, color.b, 1)
i = i + charSize + 10
end
end
end
end
util.file_watch("ERP", function(content)
text = content
end)
|