Optimise previous commit

This commit is contained in:
marco_a 2024-03-17 11:42:27 +01:00
parent fb8639a9d4
commit ee4735b0eb

View File

@ -1,3 +1,10 @@
-- copia dell'equipaggiamento per alleggerire calcoli su HUD_weapons_update.
-- Prob è inutile far funzione solo per svuotare la voce dellə giocante, tanto viene
-- ricreata ogni volta che si entra in partita
local p_equip = {} -- KEY: p_name; VALUE: {equip1, 2, 3}
function block_league.HUD_weapons_create(p_name, is_spectator)
local inv = minetest.get_player_by_name(p_name):get_inventory()
local sub_img_elems = {}
@ -66,24 +73,24 @@ function block_league.HUD_weapons_create(p_name, is_spectator)
sub_img_elems = sub_img_elems,
sub_txt_elems = sub_txt_elems
})
-- anche per spettanti, in caso entrino poi in partita
p_equip[p_name] = table.copy(block_league.get_player_weapons(p_name))
end
function block_league.HUD_weapons_update(arena, p_name, w_name, is_reloading)
local inv_main = minetest.get_player_by_name(p_name):get_inventory():get_list("main") -- TODO: per ottimizzare, salva (e solo i nomi) quando entrano
local equip = p_equip[p_name]
local slot_id
for i = 1, 3 do
if inv_main[i]:get_name() == w_name then
if equip and equip[i] == w_name then
slot_id = i
end
end
-- se è casella vuota, annulla
if not slot_id then return end
local weapon = minetest.registered_nodes[w_name] or {} -- TODO: è possibile che sia vuota?
local weapon = minetest.registered_nodes[w_name]
local current_magazine = not weapon.magazine and "" or arena.players[p_name].weapons_magazine[w_name]
local bg_pic = ""
@ -96,14 +103,13 @@ function block_league.HUD_weapons_update(arena, p_name, w_name, is_reloading)
end
local panel = panel_lib.get_panel(p_name, "bl_weapons")
local icon = weapon.inventory_image -- potrei aggiungere parametro `is_spec_rotating` per non calcolarla su ogni sparo,
-- ma penso complicherebbe comprensione del codice (con if nel for dellɜ spettanti)
panel:update(nil,
{[slot_id .. "_magazine_txt"] = { text = current_magazine }},
{[slot_id .. "_bg"] = { text = bg_pic }}
)
local icon = weapon.inventory_image or "" -- TODO: è possibile che sia vuota?
for sp_name, _ in pairs(arena_lib.get_player_spectators(p_name)) do
local panel_sp = panel_lib.get_panel(sp_name, "bl_weapons")