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
|
local player_huds = {}
local states = {
{0, "Normal font"},
{1, "Bold font"},
{2, "Italic font"},
{3, "Bold and italic font"},
{4, "Monospace font"},
{5, "Bold and monospace font"},
{7, "ZOMG all the font styles"},
}
local default_def = {
hud_elem_type = "text",
position = {x = 0.5, y = 0.5},
scale = {x = 2, y = 2},
alignment = { x = 0, y = 0 },
}
local function add_hud(player, state)
local def = table.copy(default_def)
local statetbl = states[state]
def.offset = {x = 0, y = 32 * state}
def.style = statetbl[1]
def.text = statetbl[2]
return player:hud_add(def)
end
minetest.register_on_leaveplayer(function(player)
player_huds[player:get_player_name()] = nil
end)
local etime = 0
local state = 0
minetest.register_globalstep(function(dtime)
etime = etime + dtime
if etime < 1 then
return
end
etime = 0
for _, player in ipairs(minetest.get_connected_players()) do
local huds = player_huds[player:get_player_name()]
if huds then
for i, hud_id in ipairs(huds) do
local statetbl = states[(state + i) % #states + 1]
player:hud_change(hud_id, "style", statetbl[1])
player:hud_change(hud_id, "text", statetbl[2])
end
end
end
state = state + 1
end)
minetest.register_chatcommand("hudfonts", {
params = "",
description = "Show/Hide some text on the HUD with various font options",
func = function(name, param)
local player = minetest.get_player_by_name(name)
local param = tonumber(param) or 0
param = math.min(math.max(param, 1), #states)
if player_huds[name] == nil then
player_huds[name] = {}
for i = 1, param do
table.insert(player_huds[name], add_hud(player, i))
end
minetest.chat_send_player(name, ("%d HUD element(s) added."):format(param))
else
local huds = player_huds[name]
if huds then
for _, hud_id in ipairs(huds) do
player:hud_remove(hud_id)
end
minetest.chat_send_player(name, "All HUD elements removed.")
end
player_huds[name] = nil
end
return true
end,
})
|