From 0395e81b79c8be008fe288f57cc099e902652ed5 Mon Sep 17 00:00:00 2001 From: ywang Date: Tue, 22 Dec 2020 23:15:04 +0100 Subject: HUD improvements --- advtrains/textures/advtrains_hud_atc.png | Bin 369 -> 504 bytes advtrains/textures/advtrains_hud_b.png | Bin 0 -> 239 bytes advtrains/textures/advtrains_hud_b1.png | Bin 256 -> 0 bytes advtrains/textures/advtrains_hud_b2.png | Bin 309 -> 0 bytes advtrains/textures/advtrains_hud_bg.png | Bin 0 -> 67 bytes advtrains/textures/advtrains_hud_blank.png | Bin 81 -> 0 bytes advtrains/textures/advtrains_hud_blue.png | Bin 83 -> 0 bytes advtrains/textures/advtrains_hud_emg.png | Bin 441 -> 525 bytes advtrains/textures/advtrains_hud_f.png | Bin 139 -> 0 bytes advtrains/textures/advtrains_hud_forward.png | Bin 0 -> 788 bytes advtrains/textures/advtrains_hud_gray.png | Bin 82 -> 0 bytes advtrains/textures/advtrains_hud_l_right.png | Bin 119 -> 0 bytes advtrains/textures/advtrains_hud_left_door.png | Bin 0 -> 719 bytes advtrains/textures/advtrains_hud_lzb.png | Bin 329 -> 408 bytes advtrains/textures/advtrains_hud_man.png | Bin 416 -> 0 bytes advtrains/textures/advtrains_hud_n.png | Bin 204 -> 243 bytes advtrains/textures/advtrains_hud_na.png | Bin 329 -> 0 bytes advtrains/textures/advtrains_hud_neutral.png | Bin 0 -> 678 bytes advtrains/textures/advtrains_hud_orange.png | Bin 83 -> 0 bytes advtrains/textures/advtrains_hud_p.png | Bin 193 -> 195 bytes advtrains/textures/advtrains_hud_r.png | Bin 206 -> 215 bytes advtrains/textures/advtrains_hud_red.png | Bin 83 -> 0 bytes advtrains/textures/advtrains_hud_reverse.png | Bin 0 -> 913 bytes advtrains/textures/advtrains_hud_right_door.png | Bin 0 -> 890 bytes advtrains/textures/advtrains_hud_shunt.png | Bin 440 -> 572 bytes advtrains/textures/advtrains_hud_speed_atc.png | Bin 139 -> 0 bytes advtrains/textures/advtrains_hud_speed_bg.png | Bin 122 -> 0 bytes advtrains/textures/advtrains_hud_speed_ind.png | Bin 67 -> 0 bytes advtrains/textures/advtrains_hud_speed_limit.png | Bin 82 -> 0 bytes advtrains/textures/advtrains_hud_speed_max.png | Bin 75 -> 0 bytes advtrains/textures/advtrains_hud_speed_next.png | Bin 144 -> 0 bytes advtrains/trainhud.lua | 105 ++++++++++++++++------- 32 files changed, 75 insertions(+), 30 deletions(-) create mode 100644 advtrains/textures/advtrains_hud_b.png delete mode 100644 advtrains/textures/advtrains_hud_b1.png delete mode 100644 advtrains/textures/advtrains_hud_b2.png create mode 100644 advtrains/textures/advtrains_hud_bg.png delete mode 100644 advtrains/textures/advtrains_hud_blank.png delete mode 100644 advtrains/textures/advtrains_hud_blue.png delete mode 100644 advtrains/textures/advtrains_hud_f.png create mode 100644 advtrains/textures/advtrains_hud_forward.png delete mode 100644 advtrains/textures/advtrains_hud_gray.png delete mode 100644 advtrains/textures/advtrains_hud_l_right.png create mode 100644 advtrains/textures/advtrains_hud_left_door.png delete mode 100644 advtrains/textures/advtrains_hud_man.png delete mode 100644 advtrains/textures/advtrains_hud_na.png create mode 100644 advtrains/textures/advtrains_hud_neutral.png delete mode 100644 advtrains/textures/advtrains_hud_orange.png delete mode 100644 advtrains/textures/advtrains_hud_red.png create mode 100644 advtrains/textures/advtrains_hud_reverse.png create mode 100644 advtrains/textures/advtrains_hud_right_door.png delete mode 100644 advtrains/textures/advtrains_hud_speed_atc.png delete mode 100644 advtrains/textures/advtrains_hud_speed_bg.png delete mode 100644 advtrains/textures/advtrains_hud_speed_ind.png delete mode 100644 advtrains/textures/advtrains_hud_speed_limit.png delete mode 100644 advtrains/textures/advtrains_hud_speed_max.png delete mode 100644 advtrains/textures/advtrains_hud_speed_next.png diff --git a/advtrains/textures/advtrains_hud_atc.png b/advtrains/textures/advtrains_hud_atc.png index e46f9bb..766c961 100644 Binary files a/advtrains/textures/advtrains_hud_atc.png and b/advtrains/textures/advtrains_hud_atc.png differ diff --git a/advtrains/textures/advtrains_hud_b.png b/advtrains/textures/advtrains_hud_b.png new file mode 100644 index 0000000..6058ba0 Binary files /dev/null and b/advtrains/textures/advtrains_hud_b.png differ diff --git a/advtrains/textures/advtrains_hud_b1.png b/advtrains/textures/advtrains_hud_b1.png deleted file mode 100644 index 50fe46e..0000000 Binary files a/advtrains/textures/advtrains_hud_b1.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_b2.png b/advtrains/textures/advtrains_hud_b2.png deleted file mode 100644 index 6aa91bf..0000000 Binary files a/advtrains/textures/advtrains_hud_b2.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_bg.png b/advtrains/textures/advtrains_hud_bg.png new file mode 100644 index 0000000..aa168d4 Binary files /dev/null and b/advtrains/textures/advtrains_hud_bg.png differ diff --git a/advtrains/textures/advtrains_hud_blank.png b/advtrains/textures/advtrains_hud_blank.png deleted file mode 100644 index 26b59e7..0000000 Binary files a/advtrains/textures/advtrains_hud_blank.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_blue.png b/advtrains/textures/advtrains_hud_blue.png deleted file mode 100644 index 9fbc572..0000000 Binary files a/advtrains/textures/advtrains_hud_blue.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_emg.png b/advtrains/textures/advtrains_hud_emg.png index 1633caa..735706b 100644 Binary files a/advtrains/textures/advtrains_hud_emg.png and b/advtrains/textures/advtrains_hud_emg.png differ diff --git a/advtrains/textures/advtrains_hud_f.png b/advtrains/textures/advtrains_hud_f.png deleted file mode 100644 index 2ca5d0a..0000000 Binary files a/advtrains/textures/advtrains_hud_f.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_forward.png b/advtrains/textures/advtrains_hud_forward.png new file mode 100644 index 0000000..ca05e97 Binary files /dev/null and b/advtrains/textures/advtrains_hud_forward.png differ diff --git a/advtrains/textures/advtrains_hud_gray.png b/advtrains/textures/advtrains_hud_gray.png deleted file mode 100644 index 96e0535..0000000 Binary files a/advtrains/textures/advtrains_hud_gray.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_l_right.png b/advtrains/textures/advtrains_hud_l_right.png deleted file mode 100644 index 70d51db..0000000 Binary files a/advtrains/textures/advtrains_hud_l_right.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_left_door.png b/advtrains/textures/advtrains_hud_left_door.png new file mode 100644 index 0000000..0f15727 Binary files /dev/null and b/advtrains/textures/advtrains_hud_left_door.png differ diff --git a/advtrains/textures/advtrains_hud_lzb.png b/advtrains/textures/advtrains_hud_lzb.png index d74b1ed..3f827ec 100644 Binary files a/advtrains/textures/advtrains_hud_lzb.png and b/advtrains/textures/advtrains_hud_lzb.png differ diff --git a/advtrains/textures/advtrains_hud_man.png b/advtrains/textures/advtrains_hud_man.png deleted file mode 100644 index 9c1f906..0000000 Binary files a/advtrains/textures/advtrains_hud_man.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_n.png b/advtrains/textures/advtrains_hud_n.png index bdf26f1..762a48e 100644 Binary files a/advtrains/textures/advtrains_hud_n.png and b/advtrains/textures/advtrains_hud_n.png differ diff --git a/advtrains/textures/advtrains_hud_na.png b/advtrains/textures/advtrains_hud_na.png deleted file mode 100644 index b4a53ee..0000000 Binary files a/advtrains/textures/advtrains_hud_na.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_neutral.png b/advtrains/textures/advtrains_hud_neutral.png new file mode 100644 index 0000000..266a634 Binary files /dev/null and b/advtrains/textures/advtrains_hud_neutral.png differ diff --git a/advtrains/textures/advtrains_hud_orange.png b/advtrains/textures/advtrains_hud_orange.png deleted file mode 100644 index 1d62d51..0000000 Binary files a/advtrains/textures/advtrains_hud_orange.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_p.png b/advtrains/textures/advtrains_hud_p.png index 8ef4f46..11d9981 100644 Binary files a/advtrains/textures/advtrains_hud_p.png and b/advtrains/textures/advtrains_hud_p.png differ diff --git a/advtrains/textures/advtrains_hud_r.png b/advtrains/textures/advtrains_hud_r.png index edd11df..0a061d4 100644 Binary files a/advtrains/textures/advtrains_hud_r.png and b/advtrains/textures/advtrains_hud_r.png differ diff --git a/advtrains/textures/advtrains_hud_red.png b/advtrains/textures/advtrains_hud_red.png deleted file mode 100644 index 983ce1f..0000000 Binary files a/advtrains/textures/advtrains_hud_red.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_reverse.png b/advtrains/textures/advtrains_hud_reverse.png new file mode 100644 index 0000000..7d23a6e Binary files /dev/null and b/advtrains/textures/advtrains_hud_reverse.png differ diff --git a/advtrains/textures/advtrains_hud_right_door.png b/advtrains/textures/advtrains_hud_right_door.png new file mode 100644 index 0000000..ccddb63 Binary files /dev/null and b/advtrains/textures/advtrains_hud_right_door.png differ diff --git a/advtrains/textures/advtrains_hud_shunt.png b/advtrains/textures/advtrains_hud_shunt.png index e01a91a..f2d106a 100644 Binary files a/advtrains/textures/advtrains_hud_shunt.png and b/advtrains/textures/advtrains_hud_shunt.png differ diff --git a/advtrains/textures/advtrains_hud_speed_atc.png b/advtrains/textures/advtrains_hud_speed_atc.png deleted file mode 100644 index 81f7901..0000000 Binary files a/advtrains/textures/advtrains_hud_speed_atc.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_speed_bg.png b/advtrains/textures/advtrains_hud_speed_bg.png deleted file mode 100644 index bdd7b8f..0000000 Binary files a/advtrains/textures/advtrains_hud_speed_bg.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_speed_ind.png b/advtrains/textures/advtrains_hud_speed_ind.png deleted file mode 100644 index 5e27891..0000000 Binary files a/advtrains/textures/advtrains_hud_speed_ind.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_speed_limit.png b/advtrains/textures/advtrains_hud_speed_limit.png deleted file mode 100644 index 2dd3998..0000000 Binary files a/advtrains/textures/advtrains_hud_speed_limit.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_speed_max.png b/advtrains/textures/advtrains_hud_speed_max.png deleted file mode 100644 index 3ea0909..0000000 Binary files a/advtrains/textures/advtrains_hud_speed_max.png and /dev/null differ diff --git a/advtrains/textures/advtrains_hud_speed_next.png b/advtrains/textures/advtrains_hud_speed_next.png deleted file mode 100644 index e562437..0000000 Binary files a/advtrains/textures/advtrains_hud_speed_next.png and /dev/null differ diff --git a/advtrains/trainhud.lua b/advtrains/trainhud.lua index 255324e..a4b5ef0 100644 --- a/advtrains/trainhud.lua +++ b/advtrains/trainhud.lua @@ -130,7 +130,7 @@ function advtrains.set_trainhud(name, text, driver) hud.oldText=text end if hud.driver then - player:hud_change(hud.driver, "text", driver or "advtrains_hud_blank.png") + player:hud_change(hud.driver, "text", driver or "") elseif driver then hud.driver = player:hud_add(driverhud) end @@ -183,49 +183,94 @@ function advtrains.hud_train_format(train, flip) local vel = advtrains.abs_ceil(train.velocity) local vel_kmh=advtrains.abs_ceil(advtrains.ms_to_kmh(train.velocity)) - local levers = { - [0] = "advtrains_hud_red.png^advtrains_hud_emg.png", - "advtrains_hud_orange.png^advtrains_hud_b2.png", - "advtrains_hud_orange.png^advtrains_hud_b1.png", - "advtrains_hud_gray.png^advtrains_hud_n.png", - "advtrains_hud_blue.png^advtrains_hud_p.png"} - local tlev=train.lever + local levers = {[0] = "emg","b","r","n","p"} + local lvrcolor = {[0] = "red", "orange", "orange", "cyan", "cyan"} + local tlev=train.lever or 1 if train.velocity==0 and not train.active_control then tlev=1 end local st = {} if train.debug then st = {train.debug} end - local ht = ("[combine:100x110:0,0=(%s):50,0=(%s):0,22=(%s):50,22=(%s):0,44=(%s):50,44=(%s):0,66=advtrains_hud_speed_bg.png" - ..":%d,77=(advtrains_hud_speed_ind.png%s)"):format( - ("advtrains_hud_blue.png^advtrains_hud_%s.png"):format(flip and "r" or "f"), - levers[tlev or 32767] or "advtrains_hud_gray.png^advtrains_hud_na.png", - (train.tarvelocity or train.atc_command) - and "advtrains_hud_blue.png^advtrains_hud_atc.png" - or (train.ctrl.lzb and "advtrains_hud_red.png^advtrains_hud_lzb.png" or "advtrains_hud_gray.png^advtrains_hud_man.png"), - train.is_shunt and "advtrains_hud_orange.png^advtrains_hud_shunt.png" or "advtrains_hud_gray.png^advtrains_hud_shunt.png", - train.door_open == -1 and "advtrains_hud_blue.png^advtrains_hud_l_right.png" or "advtrains_hud_gray.png^advtrains_hud_l_right.png", - train.door_open == 1 and "advtrains_hud_blue.png^advtrains_hud_r.png" or "advtrains_hud_gray.png^advtrains_hud_r.png", - vel*4.85, (res and res>=0) and "" or "^[resize\\:3x22") - local si = {} - if max < 20 then - si[#si+1] = ("%d,77=(advtrains_hud_speed_max.png^[resize\\:%dx22)"):format(max*5,100-max*5) + local ht = {"[combine:300x130:0,0=(advtrains_hud_bg.png^[resize\\:300x130)"} + ht[#ht+1] = "100,0=(advtrains_hud_" .. (flip and "reverse" or "forward") .. ".png^[resize\\:100x20)" + ht[#ht+1] = "200,0=(advtrains_hud_" .. (levers[tlev] or "bg") .. ".png^[resize\\:100x20^[multiply\\:" .. (lvrcolor[tlev] or "#000000") .. ")" + if train.tarvelocity or train.atc_command then + ht[#ht+1] = "100,20=(advtrains_hud_atc.png^[resize\\:100x20)" end - if res and res>=0 then - si[#si+1] = ("%d,88=advtrains_hud_speed_limit.png"):format(res*4.85) + if train.ctrl.lzb then + ht[#ht+1] = "200,20=(advtrains_hud_lzb.png^[resize\\:100x20^[multiply\\:red)" end - if train.tarvelocity then - si[#si+1] = ("%d,66=advtrains_hud_speed_atc.png"):format(train.tarvelocity*4.85) + if train.is_shunt then + ht[#ht+1] = "100,40=(advtrains_hud_shunt.png^[resize\\:100x20)" + end + if train.door_open == -1 then + ht[#ht+1] = "100,60=(advtrains_hud_left_door.png^[resize\\:100x20)" + elseif train.door_open == 1 then + ht[#ht+1] = "200,60=(advtrains_hud_right_door.png^[resize\\:100x20)" end local lzb = train.lzb if lzb and lzb.oncoming then for i = 1, #lzb.oncoming do local k = lzb.oncoming[i] - if k.spd and k.spd >= 0 then - si[#si+1] = ("%d,102=advtrains_hud_speed_next.png"):format(k.spd*4.85) - break + if not k.spd then + ht[#ht+1] = "203,43=(advtrains_hud_bg.png^[resize\\:14x14^[colorize\\:lime\\:255)" + elseif k.spd == 0 then + ht[#ht+1] = "283,43=(advtrains_hud_bg.png^[resize\\:14x14^[colorize\\:red\\:255)" + else + ht[#ht+1] = "243,43=(advtrains_hud_bg.png^[resize\\:14x14^[colorize\\:orange\\:255)" + end + break + end + end + -- speed indication(s) + local function sevenseg(digit, x, y, w, h, m) + --[[ + -1- + 2 3 + -4- + 5 6 + -7- + ]] + local segs = { + {h, 0, w, h}, + {0, h, h, w}, + {w+h, h, h, w}, + {h, w+h, w, h}, + {0, w+2*h, h, w}, + {w+h, w+2*h, h, w}, + {h, 2*(w+h), w, h}} + local trans = { + [0] = {true, true, true, false, true, true, true}, + [1] = {false, false, true, false, false, true, false}, + [2] = {true, false, true, true, true, false, true}, + [3] = {true, false, true, true, false, true, true}, + [4] = {false, true, true, true, false, true, false}, + [5] = {true, true, false, true, false, true, true}, + [6] = {true, true, false, true, true, true, true}, + [7] = {true, false, true, false, false, true, false}, + [8] = {true, true, true, true, true, true, true}, + [9] = {true, true, true, true, false, true, true}} + local ent = trans[digit or 10] + if not ent then return end + for i = 1, 7, 1 do + if ent[i] then + local s = segs[i] + ht[#ht+1] = ("%d,%d=(advtrains_hud_bg.png^[resize\\:%dx%d^%s)"):format(x+s[1], y+s[2], s[3], s[4], m) end end end + sevenseg(math.floor(vel/10), 5, 5, 20, 10, "[colorize\\:red\\:255") + sevenseg(vel%10, 55, 5, 20, 10, "[colorize\\:red\\:255") + ht[#ht+1] = ("10,100=(advtrains_hud_bg.png^[resize\\:%dx10^[colorize\\:white\\:255)"):format(vel*14) + if max < 20 then + ht[#ht+1] = ("%d,100=(advtrains_hud_bg.png^[resize\\:%dx10^[colorize\\:gray\\:255)"):format(10+max*14, 280-max*14) + end + if res and res > 0 then + ht[#ht+1] = ("10,85=(advtrains_hud_bg.png^[resize\\:%dx10^[colorize\\:red\\:255)"):format(res*14) + end + if train.tarvelocity then + ht[#ht+1] = ("10,115=(advtrains_hud_bg.png^[resize\\:%dx10^[colorize\\:cyan\\:255)"):format(train.tarvelocity*14) + end if res and res == 0 then st[#st+1] = attrans("OVERRUN RED SIGNAL! Examine situation and reverse train to move again.") @@ -235,5 +280,5 @@ function advtrains.hud_train_format(train, flip) st[#st+1] = ("ATC: %s%s"):format(train.atc_delay and advtrains.abs_ceil(train.atc_delay).."s " or "", train.atc_command or "") end - return table.concat(st,"\n"), #si>0 and ht..":"..table.concat(si,":") or ht + return table.concat(st,"\n"), table.concat(ht,":") end -- cgit v1.2.3