117 lines
3.4 KiB
Lua
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 |