mirror of
https://github.com/pandorabox-io/locator.git
synced 2026-05-04 15:56:52 -06:00
radar range
This commit is contained in:
@@ -21,7 +21,7 @@ local format_pos = function(pos)
|
|||||||
return pos.x .. "/" .. pos.y .. "/" .. pos.z
|
return pos.x .. "/" .. pos.y .. "/" .. pos.z
|
||||||
end
|
end
|
||||||
|
|
||||||
local show_radar = function(pos, player)
|
local show_radar = function(pos, player, maxrange)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local hud_data = hud[name]
|
local hud_data = hud[name]
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ local show_radar = function(pos, player)
|
|||||||
|
|
||||||
for i,beacon in pairs(locator.beacons) do
|
for i,beacon in pairs(locator.beacons) do
|
||||||
local distance = vector.distance(pos, beacon.pos)
|
local distance = vector.distance(pos, beacon.pos)
|
||||||
if distance < beacon.range then
|
if distance < beacon.range and distance < maxrange then
|
||||||
-- in range
|
-- in range
|
||||||
local id = player:hud_add({
|
local id = player:hud_add({
|
||||||
hud_elem_type = "waypoint",
|
hud_elem_type = "waypoint",
|
||||||
@@ -49,9 +49,22 @@ local show_radar = function(pos, player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
hud[name] = hud_data;
|
hud[name] = hud_data;
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local update_formspec = function(meta)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
|
||||||
|
local range = meta:get_int("range") or 1000
|
||||||
|
|
||||||
|
meta:set_string("formspec", "size[8,2;]" ..
|
||||||
|
-- col 1
|
||||||
|
"field[0,1.5;4,1;range;Range;" .. range .. "]" ..
|
||||||
|
"button_exit[4,1;4,1;save;Save]" ..
|
||||||
|
"")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- locator radar
|
-- locator radar
|
||||||
minetest.register_node("locator:radar", {
|
minetest.register_node("locator:radar", {
|
||||||
description = "Locator radar",
|
description = "Locator radar",
|
||||||
@@ -64,7 +77,28 @@ minetest.register_node("locator:radar", {
|
|||||||
"locator_radar.png"
|
"locator_radar.png"
|
||||||
},
|
},
|
||||||
groups = {cracky=3,oddly_breakable_by_hand=3},
|
groups = {cracky=3,oddly_breakable_by_hand=3},
|
||||||
sounds = default.node_sound_glass_defaults()
|
sounds = default.node_sound_glass_defaults(),
|
||||||
|
|
||||||
|
on_receive_fields = function(pos, formname, fields, sender)
|
||||||
|
if minetest.is_protected(pos, sender) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
|
||||||
|
if fields.save and fields.range then
|
||||||
|
meta:set_int("range", tonumber(fields.range) or 1000)
|
||||||
|
end
|
||||||
|
|
||||||
|
update_formspec(meta)
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_construct = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
update_formspec(meta)
|
||||||
|
end,
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -90,7 +124,9 @@ minetest.register_globalstep(function(dtime)
|
|||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
local node = minetest.find_node_near(pos, radius, {"locator:radar"}, true)
|
local node = minetest.find_node_near(pos, radius, {"locator:radar"}, true)
|
||||||
if node then
|
if node then
|
||||||
show_radar(pos, player)
|
local meta = minetest.get_meta(node)
|
||||||
|
local range = meta:get_int("range") or 1000
|
||||||
|
show_radar(pos, player, range)
|
||||||
else
|
else
|
||||||
clear_radar(player:get_player_name())
|
clear_radar(player:get_player_name())
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user