is_shown() utility | Bugfix: sub elements instantly updated if :update() is called when they're displayed
parent
9e8ea201ca
commit
ab6db258ae
1
DOCS.md
1
DOCS.md
|
@ -38,6 +38,7 @@ Install it as any other mod `¯\_(ツ)_/¯`
|
|||
* `new({params})`: creates a new panel
|
||||
* `show()`: makes the panel appear
|
||||
* `hide()`: makes the panel disappear (but it's still assigned to the player)
|
||||
* `is_shown()`: whether the panel is currently displayed
|
||||
* `remove()`: deletes it
|
||||
* `update(panel_params, txt_elems, img_elems)`: updates only the mentioned parameters. For instance, calling
|
||||
|
||||
|
|
25
api.lua
25
api.lua
|
@ -26,7 +26,9 @@ Panel = {
|
|||
},
|
||||
|
||||
sub_img_elems = {},
|
||||
sub_txt_elems = {}
|
||||
sub_txt_elems = {},
|
||||
|
||||
is_shown = false
|
||||
|
||||
}
|
||||
|
||||
|
@ -135,6 +137,7 @@ function Panel:show()
|
|||
self.hud_id[name] = player:hud_add(self[name])
|
||||
end
|
||||
|
||||
self.is_shown = true
|
||||
end
|
||||
|
||||
|
||||
|
@ -149,12 +152,15 @@ function Panel:hide()
|
|||
end
|
||||
end
|
||||
|
||||
self.is_shown = false
|
||||
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
|
||||
|
@ -166,6 +172,9 @@ function Panel:update(def, txt_elems, img_elems)
|
|||
for elem, _ in pairs(txt_elems) do
|
||||
for k, v in pairs(txt_elems[elem]) do
|
||||
self[elem][k] = v
|
||||
if self.is_shown then
|
||||
player:hud_change(self.hud_id[elem], k, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -176,6 +185,9 @@ function Panel:update(def, txt_elems, img_elems)
|
|||
for elem, _ in pairs(img_elems) do
|
||||
for k, v in pairs(img_elems[elem]) do
|
||||
self[elem][k] = v
|
||||
if self.is_shown then
|
||||
player:hud_change(self.hud_id[elem], k, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -192,6 +204,15 @@ end
|
|||
|
||||
|
||||
|
||||
function Panel:is_shown()
|
||||
if self.is_shown then return true
|
||||
else return false end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------
|
||||
-----------------GETTERS----------------------
|
||||
----------------------------------------------
|
||||
|
@ -202,6 +223,8 @@ end
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------
|
||||
---------------FUNZIONI LOCALI----------------
|
||||
----------------------------------------------
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
name = "mymod_mypanel",
|
||||
player = "singleplayer",
|
||||
position = { x = 1, y = 0.5 },
|
||||
alignment = { x = -1, y = 0 },
|
||||
|
|
Loading…
Reference in New Issue