90 lines
2.6 KiB
Lua
90 lines
2.6 KiB
Lua
--[[
|
|
|
|
HUD definitions for Sunburn
|
|
|
|
Optionally from one of the supported mods
|
|
|
|
Any hud needs to define the following functions:
|
|
|
|
- sunburn.hud_init(player)
|
|
Initialize the HUD for a new player.
|
|
|
|
- sunburn.hud_update(player, value)
|
|
Display the new value "value" for the given player. "value" is
|
|
a floating point number, not necessarily bounded. You can use the
|
|
"sunburn.hud_clamp(value)" function to get an integer between 0
|
|
and 20.
|
|
|
|
]]
|
|
|
|
local M = sunburn
|
|
local C = M.config
|
|
local PPA = M.persistent_player_attributes
|
|
|
|
function M.hud_clamp(value)
|
|
if value < 0 then
|
|
return 0
|
|
elseif value > 20 then
|
|
return 20
|
|
else
|
|
return math.ceil(value)
|
|
end
|
|
end
|
|
|
|
if minetest.get_modpath("hudbars") then
|
|
hb.register_hudbar('sunburn', 0x000000, "Sunburn", {
|
|
bar = 'sunburn_hudbars_bar.png',
|
|
icon = 'sunburn_sun.png'
|
|
}, 20, 20, false)
|
|
function M.hud_init(player)
|
|
hb.init_hudbar(player, 'sunburn',
|
|
M.hud_clamp(PPA.get_value(player, 'sunburn_sunburn')),
|
|
20, false)
|
|
end
|
|
function M.hud_update(player, value)
|
|
hb.change_hudbar(player, 'sunburn', M.hud_clamp(value), 20)
|
|
end
|
|
elseif minetest.get_modpath("hud") then
|
|
-- default positions follow [hud] defaults
|
|
local position = HUD_SUNBURN_POS or { x=0.5, y=1 }
|
|
local offset = HUD_SUNBURN_OFFSET or { x=15, y=-133} -- above AIR
|
|
hud.register('sunburn', {
|
|
hud_elem_type = "statbar",
|
|
position = position,
|
|
text = "sunburn_sun.png",
|
|
background = "sunburn_sun_bg.png",
|
|
number = 20,
|
|
max = 20,
|
|
size = HUD_SD_SIZE, -- by default { x=24, y=24 },
|
|
offset = offset,
|
|
})
|
|
function M.hud_init(player)
|
|
-- automatic by [hud]
|
|
end
|
|
function M.hud_update(player, value)
|
|
hud.change_item(player, 'sunburn', {
|
|
number = M.hud_clamp(value)
|
|
})
|
|
end
|
|
else
|
|
-- 'builtin' hud
|
|
function M.hud_init(player)
|
|
-- above breath bar, for now
|
|
local name = player:get_player_name()
|
|
M.players[name].hud_id = player:hud_add({
|
|
hud_elem_type = "statbar",
|
|
position = { x=0.5, y=1 },
|
|
text = "sunburn_sun.png",
|
|
number = M.hud_clamp(PPA.get_value(player, 'sunburn_sunburn')),
|
|
direction = 0,
|
|
size = { x=24, y=24 },
|
|
offset = { x=25, y=-(48+24+16+32)},
|
|
})
|
|
end
|
|
function M.hud_update(player, value)
|
|
local name = player:get_player_name()
|
|
local hud_id = M.players[name].hud_id
|
|
player:hud_change(hud_id, 'number', M.hud_clamp(value))
|
|
end
|
|
end
|