mirror of
https://github.com/minetest-mods/craftguide.git
synced 2024-09-27 14:20:21 +02:00
re-implement search caching
This commit is contained in:
parent
2360a53a7e
commit
de3b7b33d4
39
init.lua
39
init.lua
|
@ -496,23 +496,38 @@ end
|
||||||
|
|
||||||
local function get_filter_items(data, player)
|
local function get_filter_items(data, player)
|
||||||
local filter = data.filter
|
local filter = data.filter
|
||||||
local items_list = init_items
|
local items_list
|
||||||
|
if filter == "" then
|
||||||
|
items_list = init_items
|
||||||
|
elseif searches[filter] then
|
||||||
|
items_list = searches[filter]
|
||||||
|
else
|
||||||
|
local c = 0
|
||||||
|
items_list = {}
|
||||||
|
for i = 1, #init_items do
|
||||||
|
local item = init_items[i]
|
||||||
|
local item_desc = reg_items[item].description:lower()
|
||||||
|
if item:find(filter, 1, true) or item_desc:find(filter, 1, true) then
|
||||||
|
c = c + 1
|
||||||
|
items_list[c] = item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
searches[filter] = items_list
|
||||||
|
end
|
||||||
|
|
||||||
|
local filtered_list
|
||||||
|
if not progressive_mode then
|
||||||
|
filtered_list = items_list
|
||||||
|
else
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
local filtered_list, c = {}, 0
|
local c = 0
|
||||||
|
filtered_list = {}
|
||||||
|
|
||||||
for i = 1, #items_list do
|
for i = 1, #items_list do
|
||||||
local item = items_list[i]
|
local item = items_list[i]
|
||||||
local item_desc = reg_items[item].description:lower()
|
local item_desc = reg_items[item].description:lower()
|
||||||
|
|
||||||
if filter == "" or
|
local _, has_item = recipe_in_inv(inv, item)
|
||||||
item:find(filter, 1, true)
|
|
||||||
or item_desc:find(filter, 1, true) then
|
|
||||||
local _recipes, has_item
|
|
||||||
if progressive_mode then
|
|
||||||
_recipes, has_item = recipe_in_inv(inv, item)
|
|
||||||
else
|
|
||||||
has_item = true
|
|
||||||
end
|
|
||||||
if has_item then
|
if has_item then
|
||||||
c = c + 1
|
c = c + 1
|
||||||
filtered_list[c] = item
|
filtered_list[c] = item
|
||||||
|
@ -726,6 +741,8 @@ if sfinv_only then
|
||||||
|
|
||||||
if not data then
|
if not data then
|
||||||
init_data(player, player_name)
|
init_data(player, player_name)
|
||||||
|
data = player_data[player_name]
|
||||||
|
get_filter_items(data, player)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user