132 lines
3.5 KiB
Lua

Events = {
classname = "FNEvents"
}
local gui_key_name = "pressed-fnei-gui-key"
local back_key_name = "pressed-fnei-back-key"
local CustomEvents = require "scripts/custom_events"
local supported_gui_event = {
defines.events.on_gui_checked_state_changed,
defines.events.on_gui_selection_state_changed,
defines.events.on_gui_click,
defines.events.on_gui_text_changed,
defines.events.on_gui_elem_changed,
}
function Events.debug()
CustomEvents.debug()
end
function Events.add_custom_event(gui_name, gui_type, event_name, func)
CustomEvents.add_custom_event(gui_name, gui_type, event_name, func)
end
function Events.del_custom_event(gui_name, gui_type, event_name)
CustomEvents.del_custom_event(gui_name, gui_type, event_name)
end
function Events.on_configuration_changed(event)
if not global.fnei then global.fnei = {} end
if not global.fnei.event_list then global.fnei.event_list = {} end
for i, player in pairs(game.players) do
Player.load({ player_index = i })
Gui.close_old_fnei_gui()
Controller.back_key_event()
Controller.get_cont("hotbar").on_configuration_change()
end
end
function Events.on_player_created(event)
Player.load(event)
Controller.get_cont("hotbar").open()
end
function Events.back_key(event)
Player.load(event)
Controller.back_key_event()
end
function Events.gui_key(event)
Player.load(event)
Controller.main_key_event()
end
function Events.on_tick(event)
hard_load()
end
function Events.on_gui_closed(event)
Player.load(event)
if event and event.element and string.match(event.element.name, "fnei%\t") then
Events.gui_key(event)
end
TechHook.on_gui_closed(event)
end
function Events.on_player_left_game(event)
end
function Events.on_event_invoke(event)
Player.load(event)
local gui_name, gui_type, event_name, split_strings = Events.parse_name(event)
CustomEvents.invoke(gui_name, gui_type, event_name, event, split_strings)
end
function Events.parse_name(event)
if event == nil then
out("Error: Events.parse_name: event == nil ")
return
end
local element = event.element
if element == nil then
out("Error: Events.parse_name: element == nil ")
return
end
local split_strings = {}
for num in string.gmatch(element.name or "", "[^\t]+") do
table.insert(split_strings, num)
end
if split_strings[1] == Gui.get_prefix() then
return split_strings[2], element.type, split_strings[3], split_strings
end
end
function Events:init()
script.on_configuration_changed(self.on_configuration_changed)
script.on_init(self.on_configuration_changed)
script.on_load(self.on_load)
self.event_load(defines.events.on_player_created, self.on_player_created)
self.event_load(defines.events.on_tick, self.on_tick)
self.event_load(gui_key_name, self.gui_key)
self.event_load(back_key_name, self.back_key)
self.event_load(defines.events.on_gui_closed, self.on_gui_closed)
self.event_load(defines.events.on_player_left_game, self.on_player_left_game)
for _,event in pairs(supported_gui_event) do
self.event_load(event, self.on_event_invoke)
end
Controller.init_events()
end
function Events.init_temp_events(gui_name, gui_template)
if gui_template then
for _,gui_temp in pairs(gui_template) do
if gui_temp.event then
Events.add_custom_event(gui_name, gui_temp.type, gui_temp.name, gui_temp.event)
end
Events.init_temp_events(gui_name, gui_temp.children)
end
end
end
function Events.event_load(event_name, func)
script.on_event(event_name, func)
end