70 lines
1.9 KiB
Lua
70 lines
1.9 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-bar-health.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-bar-breath.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
|