From de3b7b33d4053fd5dcc5c158c9f18216504be5d1 Mon Sep 17 00:00:00 2001 From: Alexander Weber Date: Sat, 12 Jan 2019 10:35:24 +0100 Subject: [PATCH] re-implement search caching --- init.lua | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/init.lua b/init.lua index cab270f..2234b0a 100644 --- a/init.lua +++ b/init.lua @@ -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,