1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/modules/fjei/main.lua

85 lines
3.0 KiB
Lua
Raw Normal View History

2019-11-11 15:55:09 +02:00
--[[
FJEI - Factorio "Just enough items"
2019-11-11 17:53:00 +02:00
An item recipe browser - MewMew
2019-11-11 15:55:09 +02:00
]]
local Gui = require "modules.fjei.gui"
2019-11-11 18:31:30 +02:00
local Functions = require "modules.fjei.functions"
2019-11-11 15:55:09 +02:00
local function on_player_joined_game(event)
local player = game.players[event.player_index]
2019-11-11 22:10:40 +02:00
if not global.fjei.player_data[player.index] then global.fjei.player_data[player.index] = {} end
Functions.set_crafting_machines(player.force.name)
Functions.set_base_item_list(player.force.name)
2019-11-11 15:55:09 +02:00
Gui.draw_top_toggle_button(player)
end
2019-11-11 17:53:00 +02:00
local function on_player_left_game(event)
local player = game.players[event.player_index]
2019-11-11 22:10:40 +02:00
global.fjei.player_data[player.index].history = nil
2019-11-11 17:53:00 +02:00
global.fjei.player_data[player.index].filtered_list = nil
global.fjei.player_data[player.index] = nil
end
local function on_research_finished(event)
local force_name = event.research.force.name
Functions.set_crafting_machines(force_name)
Functions.set_base_item_list(force_name)
for _, player in pairs(game.connected_players) do
global.fjei.player_data[player.index].filtered_list = nil
Gui.refresh_main_window(player)
end
end
2019-11-11 23:58:20 +02:00
local sprite_parent_whitelist = {
["fjei_main_window_item_list_table"] = true,
["fjei_main_window_history_table"] = true,
["fjei_recipe_window"] = true,
}
2019-11-11 15:55:09 +02:00
local function on_gui_click(event)
local element = event.element
if not element then return end
if not element.valid then return end
2019-11-11 17:53:00 +02:00
local player = game.players[event.player_index]
2019-11-11 22:10:40 +02:00
if Gui.gui_click_actions(element, player, event.button) then return end
if element.type ~= "sprite" then return end
2019-11-11 23:58:20 +02:00
local parent = element.parent
if not parent then return end
if sprite_parent_whitelist[parent.name] then Gui.open_recipe(element.name, player, event.button) return end
local parent = parent.parent
if not parent then return end
if sprite_parent_whitelist[parent.parent.name] then Gui.open_recipe(element.name, player, event.button) return end
local parent = parent.parent
if not parent then return end
if sprite_parent_whitelist[parent.parent.name] then Gui.open_recipe(element.name, player, event.button) return end
2019-11-11 17:53:00 +02:00
end
2019-11-11 15:55:09 +02:00
2019-11-11 17:53:00 +02:00
local function on_gui_text_changed(event)
local element = event.element
if not element then return end
if not element.valid then return end
if element.name ~= "fjei_main_window_search_textfield" then return end
local player = game.players[event.player_index]
if element.text == "" then
global.fjei.player_data[player.index].active_filter = false
else
global.fjei.player_data[player.index].active_filter = element.text
end
2019-11-11 18:31:30 +02:00
Functions.set_filtered_list(player)
2019-11-11 17:53:00 +02:00
Gui.refresh_main_window(player)
2019-11-11 15:55:09 +02:00
end
local function on_init()
global.fjei = {}
2019-11-11 17:53:00 +02:00
global.fjei.player_data = {}
2019-11-11 15:55:09 +02:00
end
local event = require "utils.event"
event.add(defines.events.on_player_joined_game, on_player_joined_game)
2019-11-11 17:53:00 +02:00
event.add(defines.events.on_player_left_game, on_player_left_game)
event.add(defines.events.on_research_finished, on_research_finished)
2019-11-11 15:55:09 +02:00
event.add(defines.events.on_gui_click, on_gui_click)
2019-11-11 17:53:00 +02:00
event.add(defines.events.on_gui_text_changed, on_gui_text_changed)
2019-11-11 15:55:09 +02:00
event.on_init(on_init)