72 lines
2.0 KiB
Lua

core.hud_replace_builtin("health", {})
core.hud_replace_builtin("breath", {})
PyuTest.HUDBARS = {
defs = {},
defs_count = 0,
players = {}
}
PyuTest.Hudbar = {}
local HudbarMeta = { __index = PyuTest.Hudbar, __newindex = PyuTest.Hudbar }
core.register_on_joinplayer(function(player)
for k, v in pairs(PyuTest.HUDBARS.defs) do
local key = player:get_player_name()
if PyuTest.HUDBARS.players[key] == nil then
PyuTest.HUDBARS.players[key] = {}
end
local ref = PyuTest.HUDBARS.players[key]
ref[k] = {idx = player:hud_add(v.cfg), name = k}
end
end)
core.register_globalstep(function(dtime)
for _, player in pairs(core.get_connected_players()) do
for _, v in pairs(PyuTest.HUDBARS.players[player:get_player_name()]) do
PyuTest.HUDBARS.defs[v.name].update(v.idx, player)
end
end
end)
function PyuTest.Hudbar:add(name, def, update)
local cfg = def or {}
cfg.hud_elem_type = "statbar"
cfg.position = {x = 0.5, y = 0.925}
cfg.direction = 0
cfg.size = {x = 24, y = 24}
cfg.offset = {x = (-10 * 24 - 25) * -(PyuTest.HUDBARS.defs_count - 1), y = (-48 + 24 + 16)}
cfg.text2 = cfg.text2 or "pyutest-bar-empty.png"
local m = setmetatable({
cfg = cfg,
update = update or function()end
}, HudbarMeta)
PyuTest.HUDBARS.defs[name] = m
PyuTest.HUDBARS.defs_count = PyuTest.HUDBARS.defs_count + 1
end
local enable_damage = core.settings:get_bool("enable_damage")
if enable_damage then
PyuTest.Hudbar:add("health", {
text = "pyutest-heart.png",
text2 = "pyutest-heart-empty.png",
number = core.PLAYER_MAX_HP_DEFAULT,
item = core.PLAYER_MAX_HP_DEFAULT,
}, function (idx, player)
player:hud_change(idx, "number", player:get_hp())
end)
PyuTest.Hudbar:add("breath", {
text = "pyutest-bubble.png",
text2 = "pyutest-bubble-empty.png",
number = core.PLAYER_MAX_BREATH_DEFAULT,
item = core.PLAYER_MAX_BREATH_DEFAULT,
}, function (idx, player)
player:hud_change(idx, "number", player:get_breath())
end)
end