local cargo_landing = require('control/cargo-landing') local combinator = require('control/combinator') local lab = require('control/lab') local rail_support = require('control/rail-support') local trash = require('control/trash') local function gui_create(player) if player.gui.relative.phi_cl_inserter_config then player.gui.relative.phi_cl_inserter_config.destroy() end combinator.gui_create(player) end local function gui_update(player, entity) lab.open(player) combinator.gui_update(player, entity) end local function entity_build(event) cargo_landing.build(event) lab.build(event) rail_support.build(event) trash.build(event) end script.on_init(function() if settings.startup['PHI-MI'].value or (settings.startup['PHI-GM'].value and settings.startup['PHI-GM'].value ~= '') then for _, player in pairs(game.players) do gui_create(player) end end combinator.storage_init() end) script.on_configuration_changed(function() if settings.startup['PHI-MI'].value or (settings.startup['PHI-GM'].value and settings.startup['PHI-GM'].value ~= '') then for _, player in pairs(game.players) do gui_create(player) if player.opened and player.opened.valid and player.opened.object_name == 'LuaEntity' then gui_update(player, player.opened.entity) end end end combinator.storage_init() end) if settings.startup['PHI-MI'].value or (settings.startup['PHI-GM'].value and settings.startup['PHI-GM'].value ~= '') then script.on_event(defines.events.on_player_created, function(event) gui_create(game.players[event.player_index]) end) script.on_event(defines.events.on_gui_opened, function(event) local player = game.players[event.player_index] if event.entity and player.opened and player.opened == event.entity then gui_update(player, event.entity) end end) script.on_event(defines.events.on_gui_selection_state_changed, function(event) local player = game.players[event.player_index] if not (player.opened and player.opened.object_name == 'LuaEntity') then return end if not player.opened.valid then return end if player.opened.type == 'constant-combinator' and player.opened.name == 'super-combinator' and player.gui.relative.phi_cl_combinator_config then local circuit_oc = player.opened.get_or_create_control_behavior() if circuit_oc and circuit_oc.sections_count and circuit_oc.sections_count == 0 then circuit_oc.add_section() end circuit_oc = circuit_oc.sections[1] circuit_oc.set_slot(1, {value = {type = 'virtual', name = 'signal-SA', quality = 'normal'}, min = event.element.parent.parent['table_research_queue']['research_queue_dropdown'].selected_index - 1}) end end) script.on_event({defines.events.on_player_rotated_entity, defines.events.on_player_flipped_entity}, function(event) if not event.player_index then return end local player = game.players[event.player_index] if not event.entity then return end if player.opened ~= event.entity then return end gui_update(player, player.opened) end) script.on_event({defines.events.on_built_entity, defines.events.on_robot_built_entity, defines.events.on_space_platform_built_entity, defines.events.script_raised_built, defines.events.script_raised_revive}, function(event) entity_build(event) end) script.on_event(defines.events.on_entity_cloned, function(event) entity_build({entity=event.destination}) end) script.on_event({defines.events.on_entity_died, defines.events.on_player_mined_entity, defines.events.on_robot_pre_mined, defines.events.script_raised_destroy}, function(event) lab.destroy(event) rail_support.destroy(event) end) end script.on_nth_tick(1800, function(_) combinator.on_nth_tick_1800() end) script.on_nth_tick(10, function(_) combinator.on_nth_tick_10() end)