forked from minertestdude/minetest-thirsty
-
Notifications
You must be signed in to change notification settings - Fork 1
/
hud.lua
87 lines (78 loc) · 2.62 KB
/
hud.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
--[[
HUD definitions for Thirsty
Optionally from one of the supported mods
Any hud needs to define the following functions:
- thirsty.hud_init(player)
Initialize the HUD for a new player.
- thirsty.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
"thirsty.hud_clamp(value)" function to get an integer between 0
and 20.
]]
local PPA = thirsty.persistent_player_attributes
function thirsty.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('thirst', 0xffffff, "Hydration", {
bar = 'thirsty_hudbars_bar.png',
icon = 'thirsty_cup_100_16.png'
}, 20, 20, false)
function thirsty.hud_init(player)
hb.init_hudbar(player, 'thirst',
thirsty.hud_clamp(PPA.get_value(player, 'thirsty_hydro')),
20, false)
end
function thirsty.hud_update(player, value)
hb.change_hudbar(player, 'thirst', thirsty.hud_clamp(value), 20)
end
elseif minetest.get_modpath("hud") then
-- default positions follow [hud] defaults
local position = HUD_THIRST_POS or { x=0.5, y=1 }
local offset = HUD_THIRST_OFFSET or { x=15, y=-133} -- above AIR
hud.register('thirst', {
hud_elem_type = "statbar",
position = position,
text = "thirsty_cup_100_24.png",
background = "thirsty_cup_0_24.png",
number = 20,
max = 20,
size = HUD_SB_SIZE, -- by default { x=24, y=24 },
offset = offset,
})
function thirsty.hud_init(player)
-- automatic by [hud]
end
function thirsty.hud_update(player, value)
hud.change_item(player, 'thirst', {
number = thirsty.hud_clamp(value)
})
end
else
-- 'builtin' hud
function thirsty.hud_init(player)
-- above breath bar, for now
local name = player:get_player_name()
thirsty.players[name].hud_id = player:hud_add({
hud_elem_type = "statbar",
position = { x=0.5, y=1 },
text = "thirsty_cup_100_24.png",
number = thirsty.hud_clamp(PPA.get_value(player, 'thirsty_hydro')),
direction = 0,
size = { x=24, y=24 },
offset = { x=25, y=-(48+24+16+32)},
})
end
function thirsty.hud_update(player, value)
local name = player:get_player_name()
local hud_id = thirsty.players[name].hud_id
player:hud_change(hud_id, 'number', thirsty.hud_clamp(value))
end
end