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
|
* `new({params})`: creates a new panel
|
||||||
* `show()`: makes the panel appear
|
* `show()`: makes the panel appear
|
||||||
* `hide()`: makes the panel disappear (but it's still assigned to the player)
|
* `hide()`: makes the panel disappear (but it's still assigned to the player)
|
||||||
|
* `is_shown()`: whether the panel is currently displayed
|
||||||
* `remove()`: deletes it
|
* `remove()`: deletes it
|
||||||
* `update(panel_params, txt_elems, img_elems)`: updates only the mentioned parameters. For instance, calling
|
* `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_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])
|
self.hud_id[name] = player:hud_add(self[name])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.is_shown = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -149,12 +152,15 @@ function Panel:hide()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.is_shown = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function Panel:update(def, txt_elems, img_elems)
|
function Panel:update(def, txt_elems, img_elems)
|
||||||
|
|
||||||
|
local player = minetest.get_player_by_name(self.player_name)
|
||||||
|
|
||||||
if def ~= nil then
|
if def ~= nil then
|
||||||
for k, v in pairs(def) do
|
for k, v in pairs(def) do
|
||||||
self[k] = v
|
self[k] = v
|
||||||
|
@ -166,6 +172,9 @@ function Panel:update(def, txt_elems, img_elems)
|
||||||
for elem, _ in pairs(txt_elems) do
|
for elem, _ in pairs(txt_elems) do
|
||||||
for k, v in pairs(txt_elems[elem]) do
|
for k, v in pairs(txt_elems[elem]) do
|
||||||
self[elem][k] = v
|
self[elem][k] = v
|
||||||
|
if self.is_shown then
|
||||||
|
player:hud_change(self.hud_id[elem], k, v)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -176,6 +185,9 @@ function Panel:update(def, txt_elems, img_elems)
|
||||||
for elem, _ in pairs(img_elems) do
|
for elem, _ in pairs(img_elems) do
|
||||||
for k, v in pairs(img_elems[elem]) do
|
for k, v in pairs(img_elems[elem]) do
|
||||||
self[elem][k] = v
|
self[elem][k] = v
|
||||||
|
if self.is_shown then
|
||||||
|
player:hud_change(self.hud_id[elem], k, v)
|
||||||
|
end
|
||||||
end
|
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----------------------
|
-----------------GETTERS----------------------
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
@ -202,6 +223,8 @@ end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
---------------FUNZIONI LOCALI----------------
|
---------------FUNZIONI LOCALI----------------
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
name = "mymod_mypanel",
|
||||||
player = "singleplayer",
|
player = "singleplayer",
|
||||||
position = { x = 1, y = 0.5 },
|
position = { x = 1, y = 0.5 },
|
||||||
alignment = { x = -1, y = 0 },
|
alignment = { x = -1, y = 0 },
|
||||||
|
|
Loading…
Reference in New Issue