mirror of
https://github.com/minetest-mods/craftguide.git
synced 2024-11-26 04:23:44 +01:00
Fix potential conflicts
This commit is contained in:
parent
dc9a05bf01
commit
967adee84f
96
init.lua
96
init.lua
@ -63,12 +63,11 @@ local pairs, ipairs, next, type, setmetatable, tonum =
|
|||||||
|
|
||||||
local vec_add, vec_mul = vector.add, vector.multiply
|
local vec_add, vec_mul = vector.add, vector.multiply
|
||||||
|
|
||||||
local ROWS, _ROWS = 9
|
local ROWS = 9
|
||||||
local LINES = 10
|
local LINES = 10
|
||||||
local IPP = ROWS * LINES
|
local IPP = ROWS * LINES
|
||||||
local MAX_FAVS = 6
|
local MAX_FAVS = 6
|
||||||
local ITEM_BTN_SIZE = 1.1
|
local ITEM_BTN_SIZE = 1.1
|
||||||
local _H = 0
|
|
||||||
|
|
||||||
-- Progressive mode
|
-- Progressive mode
|
||||||
local POLL_FREQ = 0.25
|
local POLL_FREQ = 0.25
|
||||||
@ -1077,7 +1076,7 @@ local function get_tooltip(item, info)
|
|||||||
return sprintf("tooltip[%s;%s]", item, ESC(tooltip))
|
return sprintf("tooltip[%s;%s]", item, ESC(tooltip))
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_output_fs(fs, rcp, shapeless, right, btn_size, _btn_size)
|
local function get_output_fs(fs, data, rcp, shapeless, right, btn_size, _btn_size)
|
||||||
local custom_recipe = craft_types[rcp.type]
|
local custom_recipe = craft_types[rcp.type]
|
||||||
|
|
||||||
if custom_recipe or shapeless or rcp.type == "cooking" then
|
if custom_recipe or shapeless or rcp.type == "cooking" then
|
||||||
@ -1089,7 +1088,7 @@ local function get_output_fs(fs, rcp, shapeless, right, btn_size, _btn_size)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local pos_x = right + btn_size + 0.42
|
local pos_x = right + btn_size + 0.42
|
||||||
local pos_y = _H + 0.9
|
local pos_y = data.yoffset + 0.9
|
||||||
|
|
||||||
if sub(icon, 1, 18) == "craftguide_furnace" then
|
if sub(icon, 1, 18) == "craftguide_furnace" then
|
||||||
fs(fmt("animated_image", pos_x, pos_y, 0.5, 0.5, PNG.furnace_anim, 8, 180))
|
fs(fmt("animated_image", pos_x, pos_y, 0.5, 0.5, PNG.furnace_anim, 8, 180))
|
||||||
@ -1105,7 +1104,7 @@ local function get_output_fs(fs, rcp, shapeless, right, btn_size, _btn_size)
|
|||||||
|
|
||||||
local arrow_X = right + 0.2 + (_btn_size or ITEM_BTN_SIZE)
|
local arrow_X = right + 0.2 + (_btn_size or ITEM_BTN_SIZE)
|
||||||
local X = arrow_X + 1.2
|
local X = arrow_X + 1.2
|
||||||
local Y = _H + 1.4
|
local Y = data.yoffset + 1.4
|
||||||
|
|
||||||
fs(fmt("image", arrow_X, Y + 0.06, 1, 1, PNG.arrow))
|
fs(fmt("image", arrow_X, Y + 0.06, 1, 1, PNG.arrow))
|
||||||
|
|
||||||
@ -1144,7 +1143,7 @@ local function get_output_fs(fs, rcp, shapeless, right, btn_size, _btn_size)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_grid_fs(fs, rcp)
|
local function get_grid_fs(fs, data, rcp)
|
||||||
local width = rcp.width or 1
|
local width = rcp.width or 1
|
||||||
local right, btn_size, _btn_size = 0, ITEM_BTN_SIZE
|
local right, btn_size, _btn_size = 0, ITEM_BTN_SIZE
|
||||||
local cooktime, shapeless
|
local cooktime, shapeless
|
||||||
@ -1170,10 +1169,10 @@ local function get_grid_fs(fs, rcp)
|
|||||||
local name = match(item, "%S*")
|
local name = match(item, "%S*")
|
||||||
|
|
||||||
local X = ceil((i - 1) % width - width)
|
local X = ceil((i - 1) % width - width)
|
||||||
X = X + (X * 0.2) + _ROWS + 3.9
|
X = X + (X * 0.2) + data.xoffset + 3.9
|
||||||
|
|
||||||
local Y = ceil(i / width) - min(2, rows)
|
local Y = ceil(i / width) - min(2, rows)
|
||||||
Y = Y + (Y * 0.15) + _H + 1.4
|
Y = Y + (Y * 0.15) + data.yoffset + 1.4
|
||||||
|
|
||||||
if large_recipe then
|
if large_recipe then
|
||||||
btn_size = (3 / width) * (3 / rows) + 0.3
|
btn_size = (3 / width) * (3 / rows) + 0.3
|
||||||
@ -1182,8 +1181,8 @@ local function get_grid_fs(fs, rcp)
|
|||||||
local xi = (i - 1) % width
|
local xi = (i - 1) % width
|
||||||
local yi = floor((i - 1) / width)
|
local yi = floor((i - 1) / width)
|
||||||
|
|
||||||
X = btn_size * xi + _ROWS + 0.3 + (xi * 0.05)
|
X = btn_size * xi + data.xoffset + 0.3 + (xi * 0.05)
|
||||||
Y = btn_size * yi + _H + 0.2 + (yi * 0.05)
|
Y = btn_size * yi + data.yoffset + 0.2 + (yi * 0.05)
|
||||||
end
|
end
|
||||||
|
|
||||||
if X > right then
|
if X > right then
|
||||||
@ -1254,7 +1253,7 @@ local function get_grid_fs(fs, rcp)
|
|||||||
fs("style_type[item_image_button;border=false]")
|
fs("style_type[item_image_button;border=false]")
|
||||||
end
|
end
|
||||||
|
|
||||||
get_output_fs(fs, rcp, shapeless, right, btn_size, _btn_size)
|
get_output_fs(fs, data, rcp, shapeless, right, btn_size, _btn_size)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_rcp_lbl(fs, data, panel, rn, is_recipe)
|
local function get_rcp_lbl(fs, data, panel, rn, is_recipe)
|
||||||
@ -1268,24 +1267,24 @@ local function get_rcp_lbl(fs, data, panel, rn, is_recipe)
|
|||||||
local lbl_len = #_lbl:gsub("[\128-\191]", "") -- Count chars, not bytes in UTF-8 strings
|
local lbl_len = #_lbl:gsub("[\128-\191]", "") -- Count chars, not bytes in UTF-8 strings
|
||||||
local shift = min(0.9, abs(12 - max(12, lbl_len)) * 0.15)
|
local shift = min(0.9, abs(12 - max(12, lbl_len)) * 0.15)
|
||||||
|
|
||||||
fs(fmt("label", _ROWS + 5.65 - shift, _H + 3.37, lbl))
|
fs(fmt("label", data.xoffset + 5.65 - shift, data.yoffset + 3.37, lbl))
|
||||||
|
|
||||||
if rn > 1 then
|
if rn > 1 then
|
||||||
local btn_suffix = is_recipe and "recipe" or "usage"
|
local btn_suffix = is_recipe and "recipe" or "usage"
|
||||||
local prev_name = sprintf("prev_%s", btn_suffix)
|
local prev_name = sprintf("prev_%s", btn_suffix)
|
||||||
local next_name = sprintf("next_%s", btn_suffix)
|
local next_name = sprintf("next_%s", btn_suffix)
|
||||||
local x_arrow = _ROWS + 4.9
|
local x_arrow = data.xoffset + 4.9
|
||||||
local y_arrow = _H + 3
|
local y_arrow = data.yoffset + 3
|
||||||
|
|
||||||
fs(fmt("arrow", x_arrow - shift, y_arrow, PNG.prev, prev_name, ""),
|
fs(fmt("arrow", x_arrow - shift, y_arrow, PNG.prev, prev_name, ""),
|
||||||
fmt("arrow", x_arrow + 2.3, y_arrow, PNG.next, next_name, ""))
|
fmt("arrow", x_arrow + 2.3, y_arrow, PNG.next, next_name, ""))
|
||||||
end
|
end
|
||||||
|
|
||||||
local rcp = is_recipe and panel.rcp[data.rnum] or panel.rcp[data.unum]
|
local rcp = is_recipe and panel.rcp[data.rnum] or panel.rcp[data.unum]
|
||||||
get_grid_fs(fs, rcp)
|
get_grid_fs(fs, data, rcp)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_model_fs(fs, def, model_alias)
|
local function get_model_fs(fs, data, def, model_alias)
|
||||||
if model_alias then
|
if model_alias then
|
||||||
if model_alias.drawtype == "entity" then
|
if model_alias.drawtype == "entity" then
|
||||||
def = reg_entities[model_alias.name]
|
def = reg_entities[model_alias.name]
|
||||||
@ -1324,13 +1323,14 @@ local function get_model_fs(fs, def, model_alias)
|
|||||||
t[#t + 1] = t[#t]
|
t[#t + 1] = t[#t]
|
||||||
end
|
end
|
||||||
|
|
||||||
fs(fmt("model", _ROWS + 6.6, _H + 0.05, 1.3, 1.3, "", def.mesh, concat(t, ",")))
|
fs(fmt("model",
|
||||||
|
data.xoffset + 6.6, data.yoffset + 0.05, 1.3, 1.3, "", def.mesh, concat(t, ",")))
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_title_fs(fs, query_item, favs, lang_code)
|
local function get_title_fs(fs, data)
|
||||||
local fav = is_fav(favs, query_item)
|
local fav = is_fav(data.favs, data.query_item)
|
||||||
local nfavs = #favs
|
local nfavs = #data.favs
|
||||||
local star_x, star_y, star_size = _ROWS + 0.4, _H + 0.5, 0.4
|
local star_x, star_y, star_size = data.xoffset + 0.4, data.yoffset + 0.5, 0.4
|
||||||
|
|
||||||
if nfavs < MAX_FAVS or (nfavs == MAX_FAVS and fav) then
|
if nfavs < MAX_FAVS or (nfavs == MAX_FAVS and fav) then
|
||||||
local fav_marked = sprintf("craftguide_fav%s.png", fav and "_off" or "")
|
local fav_marked = sprintf("craftguide_fav%s.png", fav and "_off" or "")
|
||||||
@ -1348,18 +1348,21 @@ local function get_title_fs(fs, query_item, favs, lang_code)
|
|||||||
end
|
end
|
||||||
|
|
||||||
fs("style_type[label;font=bold;font_size=+6]",
|
fs("style_type[label;font=bold;font_size=+6]",
|
||||||
fmt("label", _ROWS + 1.05, _H + 0.47, snip(ESC(get_desc(query_item, lang_code)), 32)),
|
fmt("label", data.xoffset + 1.05, data.yoffset + 0.47,
|
||||||
|
snip(ESC(get_desc(data.query_item, data.lang_code)), 32)),
|
||||||
"style_type[label;font=mono;font_size=+0]",
|
"style_type[label;font=mono;font_size=+0]",
|
||||||
fmt("label", _ROWS + 1.05, _H + 0.97, clr("#7bf", snip(query_item, 34))),
|
fmt("label", data.xoffset + 1.05, data.yoffset + 0.97,
|
||||||
|
clr("#7bf", snip(data.query_item, 34))),
|
||||||
"style_type[label;font=normal]")
|
"style_type[label;font=normal]")
|
||||||
|
|
||||||
local def = reg_items[query_item]
|
local def = reg_items[data.query_item]
|
||||||
local model_alias = craftguide.model_alias[query_item]
|
local model_alias = craftguide.model_alias[data.query_item]
|
||||||
|
|
||||||
if def.drawtype == "mesh" or model_alias then
|
if def.drawtype == "mesh" or model_alias then
|
||||||
get_model_fs(fs, def, model_alias)
|
get_model_fs(fs, data, def, model_alias)
|
||||||
else
|
else
|
||||||
fs(fmt("item_image", _ROWS + 6.8, _H + 0.17, 1.1, 1.1, query_item))
|
fs(fmt("item_image",
|
||||||
|
data.xoffset + 6.8, data.yoffset + 0.17, 1.1, 1.1, data.query_item))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1371,7 +1374,8 @@ local function get_export_fs(fs, data, panel, is_recipe, is_usage, max_stacks_rc
|
|||||||
name, sprintf("craftguide_export%s.png", show_export and "" or "_off"),
|
name, sprintf("craftguide_export%s.png", show_export and "" or "_off"),
|
||||||
"craftguide_export.png", "craftguide_export.png"),
|
"craftguide_export.png", "craftguide_export.png"),
|
||||||
fmt("image_button",
|
fmt("image_button",
|
||||||
_ROWS + 7.35, _H + 0.2, 0.45, 0.45, "", sprintf("export_%s", name), ""),
|
data.xoffset + 7.35, data.yoffset + 0.2, 0.45, 0.45, "",
|
||||||
|
sprintf("export_%s", name), ""),
|
||||||
sprintf("tooltip[export_%s;%s]", name, ES"Craft this stack"))
|
sprintf("tooltip[export_%s;%s]", name, ES"Craft this stack"))
|
||||||
|
|
||||||
if not show_export then return end
|
if not show_export then return end
|
||||||
@ -1391,8 +1395,9 @@ local function get_export_fs(fs, data, panel, is_recipe, is_usage, max_stacks_rc
|
|||||||
|
|
||||||
fs(sprintf("style[scrbar_%s;noclip=true]", name),
|
fs(sprintf("style[scrbar_%s;noclip=true]", name),
|
||||||
sprintf("scrollbaroptions[min=1;max=%u;smallstep=1]", min(craft_max, stack_max)),
|
sprintf("scrollbaroptions[min=1;max=%u;smallstep=1]", min(craft_max, stack_max)),
|
||||||
fmt("scrollbar", _ROWS + 8.1, _H, 3, 0.35, sprintf("scrbar_%s", name), stack_fs),
|
fmt("scrollbar",
|
||||||
fmt("button", _ROWS + 8.1, _H + 0.4, 3, 0.7, sprintf("craft_%s", name),
|
data.xoffset + 8.1, data.yoffset, 3, 0.35, sprintf("scrbar_%s", name), stack_fs),
|
||||||
|
fmt("button", data.xoffset + 8.1, data.yoffset + 0.4, 3, 0.7, sprintf("craft_%s", name),
|
||||||
sprintf("%s", sprintf(ES"Craft %u stack(s)", stack_fs))))
|
sprintf("%s", sprintf(ES"Craft %u stack(s)", stack_fs))))
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1421,17 +1426,18 @@ local function get_rcp_extra(fs, data, panel, is_recipe, is_usage)
|
|||||||
else
|
else
|
||||||
local lbl = is_recipe and ES"No recipes" or ES"No usages"
|
local lbl = is_recipe and ES"No recipes" or ES"No usages"
|
||||||
fs(fmt("button",
|
fs(fmt("button",
|
||||||
_ROWS + 0.1, _H + (panel.height / 2) - 0.5, 7.8, 1, "no_rcp", lbl))
|
data.xoffset + 0.1, data.yoffset + (panel.height / 2) - 0.5,
|
||||||
|
7.8, 1, "no_rcp", lbl))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_favs(fs, data)
|
local function get_favs(fs, data)
|
||||||
fs(fmt("label", _ROWS + 0.4, _H + 0.4, ES"Bookmarks"))
|
fs(fmt("label", data.xoffset + 0.4, data.yoffset + 0.4, ES"Bookmarks"))
|
||||||
|
|
||||||
for i = 1, #data.favs do
|
for i = 1, #data.favs do
|
||||||
local item = data.favs[i]
|
local item = data.favs[i]
|
||||||
local X = _ROWS - 0.7 + (i * 1.2)
|
local X = data.xoffset - 0.7 + (i * 1.2)
|
||||||
local Y = _H + 0.8
|
local Y = data.yoffset + 0.8
|
||||||
|
|
||||||
if data.query_item == item then
|
if data.query_item == item then
|
||||||
fs(fmt("image", X, Y, ITEM_BTN_SIZE, ITEM_BTN_SIZE, PNG.selected))
|
fs(fmt("image", X, Y, ITEM_BTN_SIZE, ITEM_BTN_SIZE, PNG.selected))
|
||||||
@ -1450,22 +1456,22 @@ local function get_panels(fs, data)
|
|||||||
|
|
||||||
for idx = 1, #panels do
|
for idx = 1, #panels do
|
||||||
local panel = panels[idx]
|
local panel = panels[idx]
|
||||||
_H = 0
|
data.yoffset = 0
|
||||||
|
|
||||||
if idx > 1 then
|
if idx > 1 then
|
||||||
for _idx = idx - 1, 1, -1 do
|
for _idx = idx - 1, 1, -1 do
|
||||||
_H = _H + panels[_idx].height + 0.1
|
data.yoffset = data.yoffset + panels[_idx].height + 0.1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
fs(fmt("bg9", _ROWS + 0.1, _H, 7.9, panel.height, PNG.bg_full, 10))
|
fs(fmt("bg9", data.xoffset + 0.1, data.yoffset, 7.9, panel.height, PNG.bg_full, 10))
|
||||||
|
|
||||||
local is_recipe, is_usage = panel.name == "recipes", panel.name == "usages"
|
local is_recipe, is_usage = panel.name == "recipes", panel.name == "usages"
|
||||||
|
|
||||||
if is_recipe or is_usage then
|
if is_recipe or is_usage then
|
||||||
get_rcp_extra(fs, data, panel, is_recipe, is_usage)
|
get_rcp_extra(fs, data, panel, is_recipe, is_usage)
|
||||||
elseif panel.name == "title" then
|
elseif panel.name == "title" then
|
||||||
get_title_fs(fs, data.query_item, data.favs, data.lang_code)
|
get_title_fs(fs, data)
|
||||||
elseif panel.name == "favs" then
|
elseif panel.name == "favs" then
|
||||||
get_favs(fs, data)
|
get_favs(fs, data)
|
||||||
end
|
end
|
||||||
@ -1479,7 +1485,7 @@ local function make_fs(data)
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
_ROWS = ROWS + 1.04
|
data.xoffset = ROWS + 1.04
|
||||||
|
|
||||||
fs(sprintf([[
|
fs(sprintf([[
|
||||||
formspec_version[%u]
|
formspec_version[%u]
|
||||||
@ -1487,9 +1493,9 @@ local function make_fs(data)
|
|||||||
no_prepend[]
|
no_prepend[]
|
||||||
bgcolor[#0000]
|
bgcolor[#0000]
|
||||||
]],
|
]],
|
||||||
MIN_FORMSPEC_VERSION, _ROWS + (data.query_item and 8 or 0), LINES + 1.7), styles)
|
MIN_FORMSPEC_VERSION, data.xoffset + (data.query_item and 8 or 0), LINES + 1.7), styles)
|
||||||
|
|
||||||
fs(fmt("bg9", 0, 0, _ROWS, LINES + 1.7, PNG.bg_full, 10))
|
fs(fmt("bg9", 0, 0, data.xoffset, LINES + 1.7, PNG.bg_full, 10))
|
||||||
|
|
||||||
fs(sprintf([[
|
fs(sprintf([[
|
||||||
box[0.2,0.2;3.5,0.6;#bababa25]
|
box[0.2,0.2;3.5,0.6;#bababa25]
|
||||||
@ -1500,13 +1506,13 @@ local function make_fs(data)
|
|||||||
fmt("image_button", 3.75, 0.15, 0.7, 0.7, "", "search", ""),
|
fmt("image_button", 3.75, 0.15, 0.7, 0.7, "", "search", ""),
|
||||||
fmt("image_button", 4.43, 0.15, 0.7, 0.7, "", "clear", ""))
|
fmt("image_button", 4.43, 0.15, 0.7, 0.7, "", "clear", ""))
|
||||||
|
|
||||||
fs(fmt("image_button", _ROWS - 3.2, 0.15, 0.7, 0.7, "", "prev_page", ""),
|
fs(fmt("image_button", data.xoffset - 3.2, 0.15, 0.7, 0.7, "", "prev_page", ""),
|
||||||
fmt("image_button", _ROWS - 0.7, 0.15, 0.7, 0.7, "", "next_page", ""))
|
fmt("image_button", data.xoffset - 0.7, 0.15, 0.7, 0.7, "", "next_page", ""))
|
||||||
|
|
||||||
data.pagemax = max(1, ceil(#data.items / IPP))
|
data.pagemax = max(1, ceil(#data.items / IPP))
|
||||||
|
|
||||||
fs(fmt("button",
|
fs(fmt("button",
|
||||||
_ROWS - 2.53, 0.15, 1.88, 0.7, "pagenum",
|
data.xoffset - 2.53, 0.15, 1.88, 0.7, "pagenum",
|
||||||
sprintf("%s / %u", clr("#ff0", data.pagenum), data.pagemax)))
|
sprintf("%s / %u", clr("#ff0", data.pagenum), data.pagemax)))
|
||||||
|
|
||||||
if #data.items == 0 then
|
if #data.items == 0 then
|
||||||
@ -1516,7 +1522,7 @@ local function make_fs(data)
|
|||||||
lbl = ES"Collect items to reveal more recipes"
|
lbl = ES"Collect items to reveal more recipes"
|
||||||
end
|
end
|
||||||
|
|
||||||
fs(fmt("button", 0, 3, _ROWS, 1, "no_item", lbl))
|
fs(fmt("button", 0, 3, data.xoffset, 1, "no_item", lbl))
|
||||||
end
|
end
|
||||||
|
|
||||||
local first_item = (data.pagenum - 1) * IPP
|
local first_item = (data.pagenum - 1) * IPP
|
||||||
|
Loading…
Reference in New Issue
Block a user