]> git.lizzy.rs Git - minetest.git/commitdiff
DevTest: Move 2 HUD commands to testhud & improve
authorWuzzy <Wuzzy@disroot.org>
Sat, 8 Oct 2022 18:41:11 +0000 (20:41 +0200)
committersfan5 <sfan5@live.de>
Sun, 23 Oct 2022 19:58:56 +0000 (21:58 +0200)
games/devtest/mods/testhud/init.lua
games/devtest/mods/testhud/textures/testhud_waypoint.png [new file with mode: 0644]
games/devtest/mods/util_commands/init.lua

index 2fa12fd71b9238afa32ae0ace35c162a00ccc071..b42951a6d8e5568eb32800c14a83fcafef1cefd6 100644 (file)
@@ -29,6 +29,7 @@ end
 
 minetest.register_on_leaveplayer(function(player)
        player_huds[player:get_player_name()] = nil
+       player_waypoints[player:get_player_name()] = nil
 end)
 
 local etime = 0
@@ -79,3 +80,134 @@ minetest.register_chatcommand("hudfonts", {
                return true
        end,
 })
+
+local player_waypoints = {}
+
+-- Use this to test waypoint capabilities
+minetest.register_chatcommand("hudwaypoints", {
+       params = "[ add | add_change | remove ]",
+       description = "Create HUD waypoints at your position for testing (add: Add waypoints and change them after 0.5s (default). add_change: Add waypoints and change immediately. remove: Remove all waypoints)",
+       func = function(name, params)
+               local player = minetest.get_player_by_name(name)
+               if not player then
+                       return false, "No player."
+               end
+               if params == "remove" then
+                       if player_waypoints[name] then
+                               for i=1, #player_waypoints[name] do
+                                       player:hud_remove(player_waypoints[name][i])
+                               end
+                               player_waypoints[name] = {}
+                       end
+                       return true, "Waypoints removed."
+               end
+               if not (params == "add_change" or params == "add" or params == "") then
+                       -- Incorrect syntax
+                       return false
+               end
+               local regular = player:hud_add {
+                       hud_elem_type = "waypoint",
+                       name = "regular waypoint",
+                       text = "m",
+                       number = 0xFFFFFF,
+                       world_pos = vector.add(player:get_pos(), {x = 0, y = 1.5, z = 0})
+               }
+               local reduced_precision = player:hud_add {
+                       hud_elem_type = "waypoint",
+                       name = "imprecise waypoint",
+                       text = "m (0.1 steps, precision = 10)",
+                       precision = 10,
+                       number = 0xFFFFFF,
+                       world_pos = vector.add(player:get_pos(), {x = 0, y = 1, z = 0})
+               }
+               local hidden_distance = player:hud_add {
+                       hud_elem_type = "waypoint",
+                       name = "waypoint with hidden distance",
+                       text = "this text is hidden as well (precision = 0)",
+                       precision = 0,
+                       number = 0xFFFFFF,
+                       world_pos = vector.add(player:get_pos(), {x = 0, y = 0.5, z = 0})
+               }
+               local function change(chplayer)
+                       if not (chplayer and chplayer:is_player()) then
+                               return
+                       end
+                       if regular then
+                               chplayer:hud_change(regular, "world_pos", vector.add(player:get_pos(), {x = 0, y = 3, z = 0}))
+                               chplayer:hud_change(regular, "number", 0xFF0000)
+                       end
+                       if reduced_precision then
+                               chplayer:hud_change(reduced_precision, "precision", 2)
+                               chplayer:hud_change(reduced_precision, "text", "m (0.5 steps, precision = 2)")
+                               chplayer:hud_change(reduced_precision, "number", 0xFFFF00)
+                       end
+                       if hidden_distance then
+                               chplayer:hud_change(hidden_distance, "number", 0x0000FF)
+                       end
+                       minetest.chat_send_player(chplayer:get_player_name(), "Waypoints changed.")
+               end
+               if params == "add_change" then
+                       -- change immediate
+                       change(player)
+               else
+                       minetest.after(0.5, change, player)
+               end
+               local image_waypoint = player:hud_add {
+                       hud_elem_type = "image_waypoint",
+                       text = "testhud_waypoint.png",
+                       world_pos = player:get_pos(),
+                       scale = {x = 3, y = 3},
+                       offset = {x = 0, y = -32}
+               }
+               if not player_waypoints[name] then
+                       player_waypoints[name] = {}
+               end
+               if regular then
+                       table.insert(player_waypoints[name], regular)
+               end
+               if reduced_precision then
+                       table.insert(player_waypoints[name], reduced_precision)
+               end
+               if hidden_distance then
+                       table.insert(player_waypoints[name], hidden_distance)
+               end
+               if image_waypoint then
+                       table.insert(player_waypoints[name], image_waypoint)
+               end
+               regular = regular or "error"
+               reduced_precision = reduced_precision or "error"
+               hidden_distance = hidden_distance or "error"
+               image_waypoint = image_waypoint or "error"
+               return true, "Waypoints added. IDs: regular: " .. regular .. ", reduced precision: " .. reduced_precision ..
+                       ", hidden distance: " .. hidden_distance .. ", image waypoint: " .. image_waypoint
+       end
+})
+
+minetest.register_on_leaveplayer(function(player)
+end)
+
+minetest.register_on_joinplayer(function(player)
+       player:set_properties({zoom_fov = 15})
+end)
+
+minetest.register_chatcommand("zoomfov", {
+       params = "[<FOV>]",
+       description = "Set or display your zoom_fov",
+       func = function(name, param)
+               local player = minetest.get_player_by_name(name)
+               if not player then
+                       return false, "No player."
+               end
+               if param == "" then
+                       local fov = player:get_properties().zoom_fov
+                       return true, "zoom_fov = "..tostring(fov)
+               end
+               local fov = tonumber(param)
+               if not fov then
+                       return false, "Missing or incorrect zoom_fov parameter!"
+               end
+               player:set_properties({zoom_fov = fov})
+               fov = player:get_properties().zoom_fov
+               return true, "zoom_fov = "..tostring(fov)
+       end,
+})
diff --git a/games/devtest/mods/testhud/textures/testhud_waypoint.png b/games/devtest/mods/testhud/textures/testhud_waypoint.png
new file mode 100644 (file)
index 0000000..f9f1308
Binary files /dev/null and b/games/devtest/mods/testhud/textures/testhud_waypoint.png differ
index 4f80172c6f2903540d28208d1caa18f0c089d959..8d12d27f03f87d708fcaf8b50a765bd9f75f7246 100644 (file)
@@ -36,32 +36,6 @@ minetest.register_chatcommand("hp", {
        end,
 })
 
-minetest.register_on_joinplayer(function(player)
-       player:set_properties({zoom_fov = 15})
-end)
-
-minetest.register_chatcommand("zoomfov", {
-       params = "[<FOV>]",
-       description = "Set or display your zoom_fov",
-       func = function(name, param)
-               local player = minetest.get_player_by_name(name)
-               if not player then
-                       return false, "No player."
-               end
-               if param == "" then
-                       local fov = player:get_properties().zoom_fov
-                       return true, "zoom_fov = "..tostring(fov)
-               end
-               local fov = tonumber(param)
-               if not fov then
-                       return false, "Missing or incorrect zoom_fov parameter!"
-               end
-               player:set_properties({zoom_fov = fov})
-               fov = player:get_properties().zoom_fov
-               return true, "zoom_fov = "..tostring(fov)
-       end,
-})
-
 local s_infplace = minetest.settings:get("devtest_infplace")
 if s_infplace == "true" then
        infplace = true
@@ -166,64 +140,6 @@ minetest.register_chatcommand("use_tool", {
 })
 
 
-
--- Use this to test waypoint capabilities
-minetest.register_chatcommand("test_waypoints", {
-       params = "[change_immediate]",
-       description = "tests waypoint capabilities",
-       func = function(name, params)
-               local player = minetest.get_player_by_name(name)
-               local regular = player:hud_add {
-                       hud_elem_type = "waypoint",
-                       name = "regular waypoint",
-                       text = "m",
-                       number = 0xFF0000,
-                       world_pos = vector.add(player:get_pos(), {x = 0, y = 1.5, z = 0})
-               }
-               local reduced_precision = player:hud_add {
-                       hud_elem_type = "waypoint",
-                       name = "better waypoint",
-                       text = "m (0.5 steps, precision = 2)",
-                       precision = 10,
-                       number = 0xFFFF00,
-                       world_pos = vector.add(player:get_pos(), {x = 0, y = 1, z = 0})
-               }
-               local function change()
-                       if regular then
-                               player:hud_change(regular, "world_pos", vector.add(player:get_pos(), {x = 0, y = 3, z = 0}))
-                       end
-                       if reduced_precision then
-                               player:hud_change(reduced_precision, "precision", 2)
-                       end
-               end
-               if params ~= "" then
-                       -- change immediate
-                       change()
-               else
-                       minetest.after(0.5, change)
-               end
-               regular = regular or "error"
-               reduced_precision = reduced_precision or "error"
-               local hidden_distance = player:hud_add {
-                       hud_elem_type = "waypoint",
-                       name = "waypoint with hidden distance",
-                       text = "this text is hidden as well (precision = 0)",
-                       precision = 0,
-                       number = 0x0000FF,
-                       world_pos = vector.add(player:get_pos(), {x = 0, y = 0.5, z = 0})
-               } or "error"
-               local image_waypoint = player:hud_add {
-                       hud_elem_type = "image_waypoint",
-                       text = "wieldhand.png",
-                       world_pos = player:get_pos(),
-                       scale = {x = 10, y = 10},
-                       offset = {x = 0, y = -32}
-               } or "error"
-               minetest.chat_send_player(name, "Waypoint IDs: regular: " .. regular .. ", reduced precision: " .. reduced_precision ..
-                       ", hidden distance: " .. hidden_distance .. ", image waypoint: " .. image_waypoint)
-       end
-})
-
 -- Unlimited node placement
 minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack)
        if placer and placer:is_player() then