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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
advtrains.hud.presets = {}
local default_renderers = {}
for _, width in pairs {30,45,82} do
for _, color in pairs {"cyan", "darkslategray", "orange", "red"} do
default_renderers[color .. width] = advtrains.font.renderer{width = width, height = 30, bgcolor = color}
end
end
local default_indicators = {
ars = {"ARS", [true] = "darkslategray30", [false] = "cyan30"},
atc = {"ATC", [true] = "cyan30", [false] = "darkslategray30"},
lzb = {"LZB", [true] = "red30", [false] = "darkslategray30"},
shunt = {"Shunt", [true] = "orange45", [false] = "darkslategray45"},
autocouple = {"Autocouple", [true] = "orange82", [false] = "darkslategray82"}
}
for _, t in pairs(default_indicators) do
local text = t[1]
t[1] = nil
for k, v in pairs(t) do
t[k] = advtrains.hud.texture_escape(default_renderers[v](text))
end
end
advtrains.hud.default_indicators = default_indicators
function advtrains.hud.presets.default(train, flip)
if not train then return "" end
local sformat = string.format -- this appears to be faster than (...):format
local max = train.max_speed or 10
local vel = advtrains.abs_ceil(train.velocity)
local res = train.speed_restriction
local tar = train.tarvelocity
local ht = {"[combine:450x120:0,0=(advtrains_hud_bg.png^[resize\\:450x120)"}
if train.debug then st = {train.debug} end
ht[#ht+1] = advtrains.hud.lever(advtrains.hud.leverof(train), 275, 10, 5, 30, 100)
-- reverser
ht[#ht+1] = sformat("245,10=(advtrains_hud_arrow.png^[transformFY%s)", flip and "" or "^[multiply\\:cyan")
ht[#ht+1] = sformat("245,95=(advtrains_hud_arrow.png%s)", flip and "^[multiply\\:orange" or "")
ht[#ht+1] = "250,35=(advtrains_hud_bg.png^[colorize\\:darkslategray^[resize\\:5x50)"
ht[#ht+1] = sformat("240,%s=(advtrains_hud_bg.png^[resize\\:25x15^[colorize\\:gray)", flip and 75 or 30)
-- first row
ht[#ht+1] = sformat("10,10=%s", default_indicators.ars[advtrains.interlocking and ars_disable or false])
ht[#ht+1] = sformat("50,10=%s", default_indicators.lzb[train.hud_lzb_effect_tmr or false])
ht[#ht+1] = sformat("90,10=%s", default_indicators.shunt[train.is_shunt or false])
ht[#ht+1] = sformat("145,10=%s", default_indicators.autocouple[train.autocouple or false])
-- second row
local asp, dist = advtrains.hud.getlzb(train)
if dist then
local color
if asp >= 0 then
color = (asp > 0) and "orange" or "red"
ht[#ht+1] = advtrains.hud.number(asp, 2, 10, 45, 5, 2, 2, color, "darkslategray")
ht[#ht+1] = sformat("10,67=(advtrains_hud_ms.png^[multiply\\:%s)", color)
else
color = "lime"
ht[#ht+1] = advtrains.hud.number(88, 2, 10, 45, 5, 2, 2, "darkslategray")
ht[#ht+1] = "10,67=(advtrains_hud_ms.png^[multiply\\:darkslategray)"
end
ht[#ht+1] = advtrains.hud.number(dist, 3, 35, 45, 9, 4, 2, color, "darkslategray")
else
ht[#ht+1] = advtrains.hud.number(88, 2, 10, 45, 5, 2, 2, "darkslategray")
ht[#ht+1] = "10,67=(advtrains_hud_ms.png^[multiply\\:darkslategray)"
ht[#ht+1] = advtrains.hud.number(888, 3, 35, 45, 9, 4, 2, "darkslategray")
end
ht[#ht+1] = sformat("100,45=%s", default_indicators.atc[(train.tarvelocity or train.atc_command) and true or false])
if tar and tar >= 0 then
local tc = math.min(max, tar)
ht[#ht+1] = advtrains.hud.number(tar, 2, 135, 45, 5, 2, 2, "cyan", "darkslategray")
ht[#ht+1] = "135,67=(advtrains_hud_ms.png^[multiply\\:cyan)"
else
ht[#ht+1] = advtrains.hud.number(88, 2, 135, 45, 5, 2, 2, "darkslategray")
ht[#ht+1] = "135,67=(advtrains_hud_ms.png^[multiply\\:darkslategray)"
end
ht[#ht+1] = advtrains.hud.door(train.door_open, 167, 45, 60, 30, 2)
-- speed indications
ht[#ht+1] = advtrains.hud.number(vel, 2, 320, 10, 35, 10, 10, "red")
ht[#ht+1] = advtrains.hud.speed_horizontal(train, 10, 80, 217, 30, 3)
return table.concat(ht,":"), 120
end
function advtrains.hud.presets.japan(train, flip)
if not train then return "" end
local sformat = string.format -- this appears to be faster than (...):format
local max = train.max_speed or 10
local vel = advtrains.abs_ceil(train.velocity)
local res = train.speed_restriction
local tar = train.tarvelocity
local ht = {"[combine:340x130:0,0=(advtrains_hud_bg.png^[resize\\:340x130)"}
ht[#ht+1] = advtrains.hud.number(vel, 2, 5, 5, 30, 10, 10, "red")
ht[#ht+1] = advtrains.hud.speed_horizontal(train, 5, 100, 217, 25, 3)
ht[#ht+1] = advtrains.hud.lever(advtrains.hud.leverof(train), 122, 5, 3, 20, 90)
ht[#ht+1] = sformat("151,5=(advtrains_hud_jp_forward.png^[multiply\\:%s)", flip and "darkslategray" or "orange")
ht[#ht+1] = sformat("188,5=(advtrains_hud_jp_reverse.png^[multiply\\:%s)", flip and "orange" or "darkslategray")
ht[#ht+1] = advtrains.hud.door(train.door_open, 151, 30, 72, 39, 2)
local asp, dist = advtrains.hud.getlzb(train)
if dist then
local color
if asp >= 0 then
color = (asp > 0) and "orange" or "red"
ht[#ht+1] = advtrains.hud.number(asp, 2, 151, 74, 5, 2, 2, color, "darkslategray")
ht[#ht+1] = sformat("151,92=(advtrains_hud_ms.png^[multiply\\:%s)", color)
else
color = "lime"
ht[#ht+1] = advtrains.hud.number(88, 2, 151, 74, 5, 2, 2, "darkslategray")
ht[#ht+1] = "151,92=(advtrains_hud_ms.png^[multiply\\:darkslategray)"
end
ht[#ht+1] = advtrains.hud.number(dist, 3, 177, 74, 10, 2, 2, color, "darkslategray")
else
ht[#ht+1] = advtrains.hud.number(88, 2, 151, 74, 5, 2, 2, "darkslategray")
ht[#ht+1] = "151,92=(advtrains_hud_ms.png^[multiply\\:darkslategray)"
ht[#ht+1] = advtrains.hud.number(888, 3, 177, 74, 10, 2, 2, "darkslategray")
end
ht[#ht+1] = sformat("235,5=(advtrains_hud_jp_atc.png^[multiply\\:%s)", (train.tarvelocity or train.atc_command) and "orange" or "darkslategray")
ht[#ht+1] = sformat("235,30=(advtrains_hud_jp_ars.png^[multiply\\:%s)", (not (advtrains.interlocking and train.ars_disable)) and "orange" or "darkslategray")
ht[#ht+1] = sformat("235,55=(advtrains_hud_jp_lzb.png^[multiply\\:%s)", train.hud_lzb_effect_tmr and "orange" or "darkslategray")
ht[#ht+1] = sformat("235,80=(advtrains_hud_jp_shunt.png^[multiply\\:%s)", train.is_shunt and "orange" or "darkslategray")
ht[#ht+1] = sformat("235,105=(advtrains_hud_jp_autocouple.png^[multiply\\:%s)", train.autocouple and "orange" or "darkslategray")
if tar and tar >= 0 then
local tc = math.min(max, tar)
ht[#ht+1] = advtrains.hud.number(tar, 2, 288, 7, 5, 2, 2, "orange", "darkslategray")
ht[#ht+1] = "310,15=(advtrains_hud_ms.png^[multiply\\:orange)"
else
ht[#ht+1] = advtrains.hud.number(88, 2, 288, 7, 5, 2, 2, "darkslategray")
ht[#ht+1] = "310,15=(advtrains_hud_ms.png^[multiply\\:darkslategray)"
end
return table.concat(ht,":"), 130
end
|