re-implement search caching

This commit is contained in:
Alexander Weber 2019-01-12 10:35:24 +01:00
parent 2360a53a7e
commit de3b7b33d4
1 changed files with 33 additions and 16 deletions

View File

@ -496,23 +496,38 @@ end
local function get_filter_items(data, player)
local filter = data.filter
local items_list = init_items
local inv = player:get_inventory()
local filtered_list, c = {}, 0
for i = 1, #items_list do
local item = items_list[i]
local item_desc = reg_items[item].description:lower()
if filter == "" or
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
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 c = 0
filtered_list = {}
for i = 1, #items_list do
local item = items_list[i]
local item_desc = reg_items[item].description:lower()
local _, has_item = recipe_in_inv(inv, item)
if has_item then
c = c + 1
filtered_list[c] = item
@ -726,6 +741,8 @@ if sfinv_only then
if not data then
init_data(player, player_name)
data = player_data[player_name]
get_filter_items(data, player)
end
end,