visible = false wasn't working

master
Zughy 2020-11-29 00:06:42 +01:00
parent 160d8006f0
commit 587da73726
1 changed files with 32 additions and 38 deletions

70
api.lua
View File

@ -2,7 +2,7 @@ panel_lib.panels = {} -- KEY: p_name; VALUE: {{"panel name" = panel}, {"pa
local function clone_table() end
local function add_sub_elem() end
local function remove_sub_elem() end
local function update_sub_elems() end
Panel = {
name = "",
@ -53,7 +53,7 @@ function Panel:new(name, def)
name = def.name
end
if def.is_shown then
if def.is_shown ~= nil then
minetest.log("warning", "[PANEL_LIB] `is_shown` is deprecated. Use `visible` instead")
def.visible = def.is_shown
end
@ -107,13 +107,15 @@ function Panel:new(name, def)
panel.player_name = def.player
end
panel.visible = def.visible
if def.visible ~= nil and type(def.visible) == "boolean" then
panel.visible = def.visible
end
panel.hud_text.bg_hud_txt = panel.background_def.text
panel.hud_text.text_hud_txt = panel.title_def.text
-- se il pannello non è mostrato di base, svuoto sfondo e titolo
if not def.visible then
if panel.visible == false then
panel.background_def.text = ""
panel.title_def.text = ""
end
@ -189,8 +191,6 @@ end
function Panel:update(def, txt_elems, img_elems)
local player = minetest.get_player_by_name(self.player_name)
if def ~= nil then
for k, v in pairs(def) do
self[k] = v
@ -198,39 +198,11 @@ function Panel:update(def, txt_elems, img_elems)
end
if txt_elems ~= nil then
for elem, _ in pairs(txt_elems) do
for k, v in pairs(txt_elems[elem]) do
self[elem][k] = v
if k == "text" then
self.hud_text[elem] = v
end
if self.visible == true then
player:hud_change(self.hud_id[elem], k, v)
end
end
end
update_sub_elems(self, txt_elems)
end
if img_elems ~= nil then
for elem, _ in pairs(img_elems) do
for k, v in pairs(img_elems[elem]) do
self[elem][k] = v
if k == "text" then
self.hud_text[elem] = v
end
if self.visible == true then
player:hud_change(self.hud_id[elem], k, v)
end
end
end
update_sub_elems(self, img_elems)
end
end
@ -341,11 +313,10 @@ function add_sub_elem(panel, type, name, HUD_elem)
-- mantengo la stessa posizione del corpo del panel, costringendo
-- l'utente a modificare gli offset se vuole spostare gli elementi
HUD_elem.position = mould.position
panel[name].position = mould.position
-- mostro l'elemento se il pannello era già visibile
panel[name].text = panel.visible and panel[name].text or ""
panel[name].text = panel:is_visible() and panel[name].text or ""
panel.hud_id[name] = minetest.get_player_by_name(panel.player_name):hud_add(panel[name])
panel.hud_text[name] = HUD_elem.text
@ -353,6 +324,29 @@ end
function update_sub_elems(panel, elems)
local player = minetest.get_player_by_name(panel.player_name)
for elem, _ in pairs(elems) do
for k, v in pairs(elems[elem]) do
panel[elem][k] = v
if k == "text" then
panel.hud_text[elem] = v
-- aggiorno il testo solo se visibile
if panel:is_visible() then
player:hud_change(panel.hud_id[elem], k, v)
end
else
player:hud_change(panel.hud_id[elem], k, v)
end
end
end
end
----------------------------------------------