Optimise previous commit
This commit is contained in:
parent
fb8639a9d4
commit
ee4735b0eb
@ -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")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user