Use PNG textures for the indication of reverser, lever, control mode, shunt mode, and doors
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 256 B |
After Width: | Height: | Size: 309 B |
After Width: | Height: | Size: 81 B |
After Width: | Height: | Size: 83 B |
After Width: | Height: | Size: 441 B |
After Width: | Height: | Size: 139 B |
After Width: | Height: | Size: 82 B |
After Width: | Height: | Size: 119 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 416 B |
After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 83 B |
After Width: | Height: | Size: 193 B |
After Width: | Height: | Size: 206 B |
After Width: | Height: | Size: 83 B |
After Width: | Height: | Size: 440 B |
|
@ -88,38 +88,55 @@ function advtrains.on_control_change(pc, train, flip)
|
||||||
end
|
end
|
||||||
function advtrains.update_driver_hud(pname, train, flip)
|
function advtrains.update_driver_hud(pname, train, flip)
|
||||||
local inside=train.text_inside or ""
|
local inside=train.text_inside or ""
|
||||||
advtrains.set_trainhud(pname, inside.."\n"..advtrains.hud_train_format(train, flip))
|
local ft, ht = advtrains.hud_train_format(train, flip)
|
||||||
|
advtrains.set_trainhud(pname, inside.."\n"..ft, ht)
|
||||||
end
|
end
|
||||||
function advtrains.clear_driver_hud(pname)
|
function advtrains.clear_driver_hud(pname)
|
||||||
advtrains.set_trainhud(pname, "")
|
advtrains.set_trainhud(pname, "")
|
||||||
end
|
end
|
||||||
|
|
||||||
function advtrains.set_trainhud(name, text)
|
function advtrains.set_trainhud(name, text, driver)
|
||||||
local hud = advtrains.hud[name]
|
local hud = advtrains.hud[name]
|
||||||
local player=minetest.get_player_by_name(name)
|
local player=minetest.get_player_by_name(name)
|
||||||
if not player then
|
if not player then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
local driverhud = {
|
||||||
|
hud_elem_type = "image",
|
||||||
|
name = "ADVTRAINS_DRIVER",
|
||||||
|
position = {x=0.5, y=0.7},
|
||||||
|
offset = {x=0,y=5},
|
||||||
|
text = driver or "advtrains_hud_blank.png",
|
||||||
|
alignment = {x=0,y=1},
|
||||||
|
scale = {x=1,y=1},}
|
||||||
if not hud then
|
if not hud then
|
||||||
hud = {}
|
hud = {["driver"]={}}
|
||||||
advtrains.hud[name] = hud
|
advtrains.hud[name] = hud
|
||||||
hud.id = player:hud_add({
|
hud.id = player:hud_add({
|
||||||
hud_elem_type = "text",
|
hud_elem_type = "text",
|
||||||
name = "ADVTRAINS",
|
name = "ADVTRAINS",
|
||||||
number = 0xFFFFFF,
|
number = 0xFFFFFF,
|
||||||
position = {x=0.5, y=0.7},
|
position = {x=0.5, y=0.7},
|
||||||
offset = {x=0, y=0},
|
offset = {x=0, y=-5},
|
||||||
text = text,
|
text = text,
|
||||||
scale = {x=200, y=60},
|
scale = {x=200, y=60},
|
||||||
alignment = {x=0, y=0},
|
alignment = {x=0, y=-1},
|
||||||
})
|
})
|
||||||
hud.oldText=text
|
hud.oldText=text
|
||||||
return
|
hud.driver = player:hud_add(driverhud)
|
||||||
elseif hud.oldText ~= text then
|
else
|
||||||
player:hud_change(hud.id, "text", text)
|
if hud.oldText ~= text then
|
||||||
hud.oldText=text
|
player:hud_change(hud.id, "text", text)
|
||||||
|
hud.oldText=text
|
||||||
|
end
|
||||||
|
if hud.driver then
|
||||||
|
player:hud_change(hud.driver, "text", driver or "advtrains_hud_blank.png")
|
||||||
|
elseif driver then
|
||||||
|
hud.driver = player:hud_add(driverhud)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function advtrains.set_help_hud(name, text)
|
function advtrains.set_help_hud(name, text)
|
||||||
local hud = advtrains.hhud[name]
|
local hud = advtrains.hhud[name]
|
||||||
local player=minetest.get_player_by_name(name)
|
local player=minetest.get_player_by_name(name)
|
||||||
|
@ -159,7 +176,6 @@ Value Disp Control Meaning
|
||||||
]]
|
]]
|
||||||
|
|
||||||
function advtrains.hud_train_format(train, flip)
|
function advtrains.hud_train_format(train, flip)
|
||||||
local fct=flip and -1 or 1
|
|
||||||
if not train then return "" end
|
if not train then return "" end
|
||||||
|
|
||||||
local max = train.max_speed or 10
|
local max = train.max_speed or 10
|
||||||
|
@ -167,25 +183,27 @@ function advtrains.hud_train_format(train, flip)
|
||||||
local vel = advtrains.abs_ceil(train.velocity)
|
local vel = advtrains.abs_ceil(train.velocity)
|
||||||
local vel_kmh=advtrains.abs_ceil(advtrains.ms_to_kmh(train.velocity))
|
local vel_kmh=advtrains.abs_ceil(advtrains.ms_to_kmh(train.velocity))
|
||||||
|
|
||||||
local levers = {[0] = "EMG", "B 2", "B 1", " N ", " P "}
|
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 tlev=train.lever
|
||||||
if train.velocity==0 and not train.active_control then tlev=1 end
|
if train.velocity==0 and not train.active_control then tlev=1 end
|
||||||
|
|
||||||
local doorstr = function(side, open)
|
|
||||||
return (open and "<%s>" or ">%s<"):format(side)
|
|
||||||
end
|
|
||||||
|
|
||||||
local topLine, firstLine
|
|
||||||
local st = {}
|
local st = {}
|
||||||
if train.debug then st = {train.debug} end
|
if train.debug then st = {train.debug} end
|
||||||
|
|
||||||
st[#st+1] = ("[%s] [%s] [%s %s]%s [%s]"):format(
|
local ht = ("[combine:100x66:0,0=(%s):50,0=(%s):0,22=(%s):50,22=(%s):0,44=(%s):50,44=(%s)"):format(
|
||||||
mletter[fct],
|
("advtrains_hud_blue.png^advtrains_hud_%s.png"):format(flip and "r" or "f"),
|
||||||
levers[tlev] or "N/A",
|
levers[tlev or 32767] or "advtrains_hud_gray.png^advtrains_hud_na.png",
|
||||||
doorstr("L", train.door_open==-1),
|
(train.tarvelocity or train.atc_command)
|
||||||
doorstr("R", train.door_open==1),
|
and "advtrains_hud_blue.png^advtrains_hud_atc.png"
|
||||||
train.is_shunt and " [SHUNT]" or "",
|
or (train.ctrl.lzb and "advtrains_hud_red.png^advtrains_hud_lzb.png" or "advtrains_hud_gray.png^advtrains_hud_man.png"),
|
||||||
(train.tarvelocity or train.atc_command) and "ATC" or (train.ctrl.lzb and "LZB" or "MAN"))
|
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")
|
||||||
|
|
||||||
local velstr = function(vel, name)
|
local velstr = function(vel, name)
|
||||||
return ("%s%02d m/s (%02d km/h)"):format(
|
return ("%s%02d m/s (%02d km/h)"):format(
|
||||||
|
@ -215,7 +233,6 @@ function advtrains.hud_train_format(train, flip)
|
||||||
end
|
end
|
||||||
i=i+1
|
i=i+1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
return table.concat(st,"\n")
|
return table.concat(st,"\n"), ht
|
||||||
end
|
end
|
||||||
|
|