From 587da737263c843435924bc0a733199b07851a0c Mon Sep 17 00:00:00 2001 From: Zughy <4279489-marco_a@users.noreply.gitlab.com> Date: Sun, 29 Nov 2020 00:06:42 +0100 Subject: [PATCH] visible = false wasn't working --- api.lua | 70 ++++++++++++++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/api.lua b/api.lua index 8e36b6f..189667e 100644 --- a/api.lua +++ b/api.lua @@ -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 + + + ----------------------------------------------