]> git.lizzy.rs Git - playerlist.git/commitdiff
Redesign UI and add some kind of API
authorElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 1 Mar 2021 08:19:38 +0000 (09:19 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Mon, 1 Mar 2021 08:19:38 +0000 (09:19 +0100)
init.lua
textures/playerlist_background.png [new file with mode: 0644]

index 8f27de8c649cc5cc3a109e477f526755a7e13478..bab47dab2423724b86be1fc6ddc100ee1543e2d4 100644 (file)
--- a/init.lua
+++ b/init.lua
@@ -1,40 +1,57 @@
-local playerlist = {}
+local playerlist = {
+       huds = {}
+}
 
-controls.register_on_press(function(player, key)
+function playerlist.iterator()
+       return ipairs(minetest.get_connected_players())
+end
+
+function playerlist.count()
+       return #minetest.get_connected_players()
+end
+
+controls.register_on_press(function(user, key)
        if key == "sneak" then
-               local name = player:get_player_name()
-               local list = {}
-               local players = minetest.get_connected_players()
-               for i, p in pairs(players) do
-                       local n = p:get_player_name()
-                       local ping = math.max(1, math.ceil(4 - minetest.get_player_information(n).avg_rtt * 4))
-                       list[#list + 1] = player:hud_add({
+               local user_name = user:get_player_name()
+               local huds = {user:hud_add({
+                       hud_elem_type = "image",
+                       position = {x = 0.5, y = 0},
+                       offset = {x = 0, y = 20},
+                       text = "playerlist_background.png",
+                       alignment = {x = 0, y = 1},
+                       scale = {x = 400, y = playerlist.count() * 18 + 8},
+                       number = 0xFFFFFF,
+               })}
+               for i, player, color, text in playerlist.iterator() do
+                       local name = player:get_player_name()
+                       local ping = math.max(1, math.ceil(4 - minetest.get_player_information(name).avg_rtt * 50))                     
+                       table.insert(huds, user:hud_add({
                                hud_elem_type = "text",
                                position = {x = 0.5, y = 0},
-                               offset = {x = 20, y = 53 + (i - 1) * 18},
-                               text = n,
-                               alignment = {x = 1, y = 1},
+                               offset = {x = 0, y = 23 + (i - 1) * 18},
+                               text = text or name,
+                               alignment = {x = 0, y = 1},
                                scale = {x = 100, y = 100},
-                               number = 0xFFFFFF,
-                       })
-                       list[#list + 1] = player:hud_add({
+                               number = color or 0xFFFFFF,
+                       }))
+                       table.insert(huds, user:hud_add({
                                hud_elem_type = "image",
                                position = {x = 0.5, y = 0},
-                               offset = {x = 0, y = 50 + (i - 1) * 18},
+                               offset = {x = -195, y = 20 + (i - 1) * 18},
                                text = "server_ping_" .. ping .. ".png",
-                               alignment = {x = -1, y = 1},
+                               alignment = {x = 1, y = 1},
                                scale = {x = 1.5, y = 1.5},
                                number = 0xFFFFFF,
-                       })
+                       }))
                end
-               playerlist[name] = list
+               playerlist.huds[user_name] = huds
        end
 end)
 
-controls.register_on_release(function(player, key)
-       if key == "sneak" and player then
-               for _, id in pairs(playerlist[player:get_player_name()]) do
-                       player:hud_remove(id)
+controls.register_on_release(function(user, key)
+       if key == "sneak" and user then
+               for _, id in pairs(playerlist.huds[user:get_player_name()]) do
+                       user:hud_remove(id)
                end
        end
 end)
diff --git a/textures/playerlist_background.png b/textures/playerlist_background.png
new file mode 100644 (file)
index 0000000..18e9c3d
Binary files /dev/null and b/textures/playerlist_background.png differ