123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- local saved_huds = {}
- local ght = tonumber(minetest.settings:get("goblins_hud_timer")) or 0
- local function clear_hud(params)
- local player = minetest.get_player_by_name(params[1])
- if player then
- local meta = player:get_meta()
- --print ("testing"..dump(params))
- if os.time() >= (meta:get_int("hud_time_start") + ght) then
- player:hud_remove(params[2])
- meta:set_int("hud_cleared",1)
- --print ("removing"..dump(params))
- end
- end
- end
- function goblins.update_hud(player)
- if ght > 0 and player then
- --for _,player in ipairs(minetest.get_connected_players()) do
- local player_name = player:get_player_name()
- --print(player_name)
- local meta = player:get_meta()
- local goblin_current = meta:get_string("goblin_current")
- local territory_current = meta:get_string("territory_current")
- local known_territories = minetest.deserialize(meta:get_string("territory_list"))
- local territory = "unknown"
- if known_territories then
- for k,v in pairs(known_territories) do
- if territory_current == v then
- territory = v
- end
- end
- end
- local text_goblin_current = goblin_current
- local text_territory_current = "of " ..territory
- local territory_score_table = minetest.deserialize(meta:get_string(territory_current))
- local text_territory_scores = {}
- if not territory_score_table then return end
- for k,v in pairs(territory_score_table) do
- text_territory_scores[k] = k..": "..v
- end
- local ids = saved_huds[player_name]
- if not ids then
- ids = {}
- ids.territory_scores = {}
- saved_huds[player_name] = ids
- -- create HUD elements and set ids into `ids`
- --[[
- player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = -25},
- text = "Goblin HUD",
- alignment = -0,
- scale = { x = 100, y = 30},
- number = 0xFFFFFF,
- })
- --]]
- ids.goblin_current = player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = -25},
- text = text_goblin_current,
- alignment = -1,
- scale = { x = 50, y = 10},
- number = 0xFFFFFF,
- })
- local params = {player_name,ids.goblin_current}
- minetest.after((ght+5),clear_hud, params)
- ids.territory_current = player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = 0},
- text = text_territory_current,
- alignment = -1,
- scale = { x = 50, y = 10},
- number = 0xFFFFFF,
- })
- local params = {player_name,ids.territory_current}
- minetest.after((ght+5),clear_hud, params)
- local tst_yo = 0
- for k,v in pairs(territory_score_table) do
- tst_yo = tst_yo + 20
- ids.territory_scores[k] = player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = tst_yo},
- text = text_territory_scores[k],
- alignment = -1,
- scale = { x = 50, y = 10},
- number = 0xFFFFFF,
- })
- local params = {player_name,ids.territory_scores[k]}
- minetest.after(ght+5,clear_hud, params)
- end
- --minetest.after(ght,clear_hud, params)
- else
- if meta:get_int("hud_cleared") == 1 then
- --hud_params_title()
- ids.goblin_current = player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = -25},
- text = text_goblin_current,
- alignment = -1,
- scale = { x = 50, y = 10},
- number = 0xFFFFFF,
- })
- local params = {player_name,ids.goblin_current}
- minetest.after(ght,clear_hud, params)
- ids.territory_current = player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = 0},
- text = text_territory_current,
- alignment = -1,
- scale = { x = 50, y = 10},
- number = 0xFFFFFF,
- })
- local params = {player_name,ids.territory_current}
- minetest.after(ght,clear_hud, params)
- local tst_yo = 0
- for k,v in pairs(territory_score_table) do
- tst_yo = tst_yo + 20
- ids.territory_scores[k] = player:hud_add({
- hud_elem_type = "text",
- position = {x = 1, y = 0.5},
- offset = {x = -120, y = tst_yo},
- text = text_territory_scores[k],
- alignment = -1,
- scale = { x = 50, y = 10},
- number = 0xFFFFFF,
- })
- local params = {player_name,ids.territory_scores[k]}
- minetest.after(ght,clear_hud, params)
- end
- else
- local params = {player_name,ids.goblin_current}
- player:hud_change(ids["goblin_current"], "text", text_goblin_current)
- minetest.after(ght,clear_hud, params)
- local params = {player_name,ids.territory_current}
- player:hud_change(ids["territory_current"], "text", text_territory_current)
- minetest.after(ght,clear_hud, params)
- for k,v in pairs(territory_score_table) do
- local params = {player_name,ids.territory_scores[k]}
- minetest.after(ght,clear_hud, params)
- player:hud_change(ids.territory_scores[k],"text", text_territory_scores[k])
- end
- --player:hud_change(ids["bar_foreground"],
- --"scale", { x = percent, y = 1 })
- end
- end
- meta:set_int("hud_cleared",0)
- meta:set_int("hud_time_start",os.time())
- --minetest.after(ght, print,"ONE" )
- -- minetest.after(ght-1, print,"TWO" )
- -- minetest.after(ght-2, print,"THREE")
- end
- end
- minetest.register_on_joinplayer(goblins.update_hud)
- minetest.register_on_leaveplayer(function(player)
- saved_huds[player:get_player_name()] = nil
- end)
|