Cleanup waypoints code
This commit is contained in:
parent
2f612bb5da
commit
d9f8b738e5
12
init.lua
12
init.lua
|
@ -77,7 +77,7 @@ i3.files.groups()
|
||||||
i3.files.inventory()
|
i3.files.inventory()
|
||||||
|
|
||||||
local storage = core.get_mod_storage()
|
local storage = core.get_mod_storage()
|
||||||
local slz, dslz = i3.get("slz", "dslz")
|
local slz, dslz, str_to_pos, add_hud_waypoint = i3.get("slz", "dslz", "str_to_pos", "add_hud_waypoint")
|
||||||
|
|
||||||
i3.data = dslz(storage:get_string "data") or {}
|
i3.data = dslz(storage:get_string "data") or {}
|
||||||
|
|
||||||
|
@ -174,15 +174,7 @@ local function init_waypoints(player)
|
||||||
|
|
||||||
for _, v in ipairs(data.waypoints) do
|
for _, v in ipairs(data.waypoints) do
|
||||||
if not v.hide then
|
if not v.hide then
|
||||||
local id = player:hud_add {
|
local id = add_hud_waypoint(player, v.name, str_to_pos(v.pos), v.color)
|
||||||
hud_elem_type = "waypoint",
|
|
||||||
name = v.name,
|
|
||||||
text = " m",
|
|
||||||
world_pos = v.pos,
|
|
||||||
number = v.color,
|
|
||||||
z_index = -300,
|
|
||||||
}
|
|
||||||
|
|
||||||
v.id = id
|
v.id = id
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -493,6 +493,17 @@ local function sort_inventory(player, data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function add_hud_waypoint(player, name, pos, color)
|
||||||
|
return player:hud_add {
|
||||||
|
hud_elem_type = "waypoint",
|
||||||
|
name = name,
|
||||||
|
text = " m",
|
||||||
|
world_pos = pos,
|
||||||
|
number = color,
|
||||||
|
z_index = -300,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
local _ = {
|
local _ = {
|
||||||
|
@ -533,12 +544,15 @@ local _ = {
|
||||||
spawn_item = spawn_item,
|
spawn_item = spawn_item,
|
||||||
clean_name = clean_name,
|
clean_name = clean_name,
|
||||||
safe_teleport = safe_teleport,
|
safe_teleport = safe_teleport,
|
||||||
|
add_hud_waypoint = add_hud_waypoint,
|
||||||
|
|
||||||
-- Core functions
|
-- Core functions
|
||||||
clr = core.colorize,
|
clr = core.colorize,
|
||||||
slz = core.serialize,
|
slz = core.serialize,
|
||||||
dslz = core.deserialize,
|
dslz = core.deserialize,
|
||||||
ESC = core.formspec_escape,
|
ESC = core.formspec_escape,
|
||||||
|
pos_to_str = core.pos_to_string,
|
||||||
|
str_to_pos = core.string_to_pos,
|
||||||
check_privs = core.check_player_privs,
|
check_privs = core.check_player_privs,
|
||||||
|
|
||||||
-- Registered items
|
-- Registered items
|
||||||
|
|
|
@ -267,7 +267,7 @@ local function get_waypoint_fs(fs, data, player, yextra, ctn_len)
|
||||||
|
|
||||||
fs("tooltip", 0, y, ctn_len - 2.5, 0.65,
|
fs("tooltip", 0, y, ctn_len - 2.5, 0.65,
|
||||||
fmt("Name: %s\nPosition:%s", clr("#ff0", v.name),
|
fmt("Name: %s\nPosition:%s", clr("#ff0", v.name),
|
||||||
core.pos_to_string(v.pos, 0):sub(2,-2):gsub("(%-*%d+)", clr("#ff0", " %1"))))
|
v.pos:sub(2,-2):gsub("(%-*%d*%.?%d+)", clr("#ff0", " %1"))))
|
||||||
|
|
||||||
local del = fmt("waypoint_%u_delete", i)
|
local del = fmt("waypoint_%u_delete", i)
|
||||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]", del, PNG.trash, PNG.trash_hover))
|
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]", del, PNG.trash, PNG.trash_hover))
|
||||||
|
|
|
@ -7,9 +7,10 @@ local fmt, find, match, sub, lower, split = i3.get("fmt", "find", "match", "sub"
|
||||||
local vec_new, vec_eq, vec_round = i3.get("vec_new", "vec_eq", "vec_round")
|
local vec_new, vec_eq, vec_round = i3.get("vec_new", "vec_eq", "vec_round")
|
||||||
local sort, copy, insert, remove, indexof = i3.get("sort", "copy", "insert", "remove", "indexof")
|
local sort, copy, insert, remove, indexof = i3.get("sort", "copy", "insert", "remove", "indexof")
|
||||||
|
|
||||||
local msg, is_fav = i3.get("msg", "is_fav")
|
|
||||||
local is_group, extract_groups, groups_to_items =
|
local is_group, extract_groups, groups_to_items =
|
||||||
i3.get("is_group", "extract_groups", "groups_to_items")
|
i3.get("is_group", "extract_groups", "groups_to_items")
|
||||||
|
local msg, is_fav, pos_to_str, str_to_pos, add_hud_waypoint =
|
||||||
|
i3.get("msg", "is_fav", "pos_to_str", "str_to_pos", "add_hud_waypoint")
|
||||||
local search, get_sorting_idx, sort_inventory, sort_by_category, get_recipes =
|
local search, get_sorting_idx, sort_inventory, sort_by_category, get_recipes =
|
||||||
i3.get("search", "get_sorting_idx", "sort_inventory", "sort_by_category", "get_recipes")
|
i3.get("search", "get_sorting_idx", "sort_inventory", "sort_by_category", "get_recipes")
|
||||||
local show_item, get_stack, clean_name, compressible, check_privs, safe_teleport =
|
local show_item, get_stack, clean_name, compressible, check_privs, safe_teleport =
|
||||||
|
@ -87,7 +88,7 @@ i3.new_tab {
|
||||||
remove(data.waypoints, id)
|
remove(data.waypoints, id)
|
||||||
|
|
||||||
elseif action == "teleport" then
|
elseif action == "teleport" then
|
||||||
local pos = vec_new(waypoint.pos)
|
local pos = vec_new(str_to_pos(waypoint.pos))
|
||||||
safe_teleport(player, pos)
|
safe_teleport(player, pos)
|
||||||
msg(name, fmt("Teleported to %s", clr("#ff0", waypoint.name)))
|
msg(name, fmt("Teleported to %s", clr("#ff0", waypoint.name)))
|
||||||
|
|
||||||
|
@ -98,14 +99,8 @@ i3.new_tab {
|
||||||
|
|
||||||
elseif action == "hide" then
|
elseif action == "hide" then
|
||||||
if waypoint.hide then
|
if waypoint.hide then
|
||||||
local new_id = player:hud_add {
|
local new_id = add_hud_waypoint(
|
||||||
hud_elem_type = "waypoint",
|
player, waypoint.name, str_to_pos(waypoint.pos), waypoint.color)
|
||||||
name = waypoint.name,
|
|
||||||
text = " m",
|
|
||||||
world_pos = waypoint.pos,
|
|
||||||
number = waypoint.color,
|
|
||||||
z_index = -300,
|
|
||||||
}
|
|
||||||
|
|
||||||
waypoint.id = new_id
|
waypoint.id = new_id
|
||||||
waypoint.hide = nil
|
waypoint.hide = nil
|
||||||
|
@ -166,11 +161,11 @@ i3.new_tab {
|
||||||
return msg(name, "'home' privilege missing")
|
return msg(name, "'home' privilege missing")
|
||||||
end
|
end
|
||||||
|
|
||||||
safe_teleport(player, core.string_to_pos(data.home))
|
safe_teleport(player, str_to_pos(data.home))
|
||||||
msg(name, S"Welcome back home!")
|
msg(name, S"Welcome back home!")
|
||||||
|
|
||||||
elseif fields.set_home then
|
elseif fields.set_home then
|
||||||
data.home = core.pos_to_string(player:get_pos(), 1)
|
data.home = pos_to_str(player:get_pos(), 1)
|
||||||
|
|
||||||
elseif sb_inv and sub(sb_inv, 1, 3) == "CHG" then
|
elseif sb_inv and sub(sb_inv, 1, 3) == "CHG" then
|
||||||
data.scrbar_inv = tonumber(match(sb_inv, "%d+"))
|
data.scrbar_inv = tonumber(match(sb_inv, "%d+"))
|
||||||
|
@ -180,7 +175,7 @@ i3.new_tab {
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
|
|
||||||
for _, v in ipairs(data.waypoints) do
|
for _, v in ipairs(data.waypoints) do
|
||||||
if vec_eq(vec_round(pos), vec_round(v.pos)) then
|
if vec_eq(vec_round(pos), vec_round(str_to_pos(v.pos))) then
|
||||||
return msg(name, "You already set a waypoint at this position")
|
return msg(name, "You already set a waypoint at this position")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -192,17 +187,15 @@ i3.new_tab {
|
||||||
end
|
end
|
||||||
|
|
||||||
local color = random(0xffffff)
|
local color = random(0xffffff)
|
||||||
|
local id = add_hud_waypoint(player, waypoint, pos, color)
|
||||||
|
|
||||||
local id = player:hud_add {
|
insert(data.waypoints, {
|
||||||
hud_elem_type = "waypoint",
|
|
||||||
name = waypoint,
|
name = waypoint,
|
||||||
text = " m",
|
pos = pos_to_str(pos, 1),
|
||||||
world_pos = pos,
|
color = color,
|
||||||
number = color,
|
id = id,
|
||||||
z_index = -300,
|
})
|
||||||
}
|
|
||||||
|
|
||||||
insert(data.waypoints, {name = waypoint, pos = pos, color = color, id = id})
|
|
||||||
data.scrbar_inv = data.scrbar_inv + 1000
|
data.scrbar_inv = data.scrbar_inv + 1000
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue