Minor update HUD

master
MoNTE48 2022-01-04 00:09:40 +01:00
parent d4f9ba9329
commit b470d8f516
1 changed files with 35 additions and 33 deletions

68
hud.lua
View File

@ -17,41 +17,43 @@ hud.register("areas", {
number = 0xFFFFFF
})
local function update_hud(player, name, pos)
local areaStrings = {
S("Areas:")
}
for id, area in pairs(areas:getAreasAtPos(pos)) do
areaStrings[#areaStrings + 1] = ("%s [%u] (%s)%s%s")
:format(area.name, id, area.owner,
area.open and (" [" .. S("Open") .. "]") or "",
area.canPvP and (" [" .. S("PvP enabled") .. "]") or "")
end
local str = ""
for _, area in pairs(areas:getExternalHudEntries(pos)) do
if area.name then str = area.name .. " " end
if area.id then str = str .. "[" .. area.id .. "] " end
if area.owner then str = str .. "(" .. area.owner .. ")" end
areaStrings[#areaStrings + 1] = str
end
-- "Areas:" text has index 1
local areaString = #areaStrings > 1 and tconcat(areaStrings, "\n") or ""
local phud = areas.hud[name] or {}
if not phud.oldAreas or phud.oldAreas ~= areaString then
hud.change_item(player, "areas", {text = areaString})
phud.oldAreas = areaString
end
end
minetest.register_playerstep(function(_, playernames)
for _, name in pairs(playernames) do
for _, name in ipairs(playernames) do
local player = minetest.get_player_by_name(name)
if not player or not player:is_player() then return end
local pos = vround(player:get_pos())
if minetest.is_valid_pos(pos) then
local areaStrings = {}
for id, area in pairs(areas:getAreasAtPos(pos)) do
areaStrings[#areaStrings+1] = ("%s [%u] (%s)%s%s%s")
:format(area.name, id, area.owner,
area.open and (" " .. S("Open")) or "",
(area.open and area.canPvP and " | " or ""), -- shitcode detected XD
area.canPvP and (" " .. S("PvP enabled")) or "")
end
local str = ""
for _, area in pairs(areas:getExternalHudEntries(pos)) do
if area.name then str = area.name .. " " end
if area.id then str = str .. "[" .. area.id .. "] " end
if area.owner then str = str .. "(" .. area.owner .. ")" end
areaStrings[#areaStrings+1] = str
end
local areaString = ""
if #areaStrings > 0 then
areaString = S("Areas:")
areaString = areaString .. "\n" ..
tconcat(areaStrings, "\n")
end
local phud = areas.hud[name] or {}
if not phud.oldAreas or phud.oldAreas ~= areaString then
hud.change_item(player, "areas", {text = areaString})
phud.oldAreas = areaString
if player and player:is_player() then
local pos = vround(player:get_pos())
if minetest.is_valid_pos(pos) then
update_hud(player, name, pos)
end
end
end