117 lines
3.4 KiB
Lua

local FneiMainController = {
classname = "FNFneiMainController",
}
local translate = require 'utils/translate'
local pages = "main-pages"
local cont_gui
function FneiMainController.init_event(gui_name, content_gui)
pages = Page:new(pages, gui_name, 12, FneiMainController.redraw_content, FneiMainController.redraw_content)
cont_gui = content_gui
Events.add_custom_event(gui_name, "choose-elem-button", "fluid", FneiMainController.open_fluid_recipe_event)
Events.add_custom_event(gui_name, "choose-elem-button", "item", FneiMainController.open_item_recipe_event)
end
function FneiMainController.draw_content()
cont_gui.set_search_field(FneiMainController.get_search_field())
FneiMainController.redraw_content()
end
function FneiMainController.redraw_content()
FneiMainController.set_page_list()
cont_gui.draw_page_label(pages)
cont_gui.draw_item_list(pages:get_list_for_tab(pages:get_cur_page()))
if Settings.get_val("focus-search") then
cont_gui.focus_on_search()
end
end
function FneiMainController.set_page_list()
local search_text = FneiMainController.get_search_field():gsub(" ", "-"):gsub("%p", "%%%0"):lower()
local page_list = {}
local items = get_item_list()
local fluids = get_fluid_list()
for _, item in pairs(items) do
local term = translate(item.name, "item") or item.name
if string.find(term:lower(), search_text) then
table.insert(page_list, "item\t" .. item.name)
end
end
for _, fluid in pairs(fluids) do
local term = translate(fluid.name, "fluid") or fluid.name
if string.find(term:lower(), search_text) then
table.insert(page_list, "fluid\t" .. fluid.name)
end
end
pages.num_per_page = 12 * Settings.get_val("fnei-line-count")
pages:set_page_list(page_list)
end
function FneiMainController.search_event(event)
if event.text then
FneiMainController.set_search_field(event.text)
FneiMainController.redraw_content()
elseif event.button == defines.mouse_button_type.right then
FneiMainController.set_search_field("")
FneiMainController.draw_content()
end
end
function FneiMainController.set_search_field(str)
Player.get_global().fnei_search = str
end
function FneiMainController.get_search_field()
return Player.get_global().fnei_search or ""
end
function FneiMainController.open_item_recipe_event(event, elem_name)
if elem_name == "item" then
local _,pos = string.find(event.element.name, "item\t")
if pos then
elem_name = string.sub(event.element.name, pos + 1)
end
local contr = Controller.get_cont("recipe")
if event.button == defines.mouse_button_type.right then
contr.add_element_in_recipe_list("usage", "item", elem_name)
Controller.open_event("recipe")
else
contr.add_element_in_recipe_list("craft", "item", elem_name)
Controller.open_event("recipe")
end
end
end
function FneiMainController.open_fluid_recipe_event(event, elem_name)
if elem_name == "fluid" then
local _,pos = string.find(event.element.name, "fluid\t")
if pos then
elem_name = string.sub(event.element.name, pos + 1)
end
local contr = Controller.get_cont("recipe")
if event.button == defines.mouse_button_type.right then
contr.add_element_in_recipe_list("usage", "fluid", elem_name)
Controller.open_event("recipe")
else
contr.add_element_in_recipe_list("craft", "fluid", elem_name)
Controller.open_event("recipe")
end
end
end
return FneiMainController