From c3b2502b87072823adfd7693135ec8a11b3e9044 Mon Sep 17 00:00:00 2001 From: mamoniot Date: Fri, 3 Mar 2023 15:45:23 -0500 Subject: [PATCH] got ltn manager to open the manager --- .vscode/launch.json | 8 +- .vscode/settings.json | 5 +- cybersyn/constants.lua | 152 ++++++++++++++++++ cybersyn/data.lua | 2 + cybersyn/graphics/gui/frame-action-icons.png | Bin 0 -> 1756 bytes .../shortcut/ltn-manager-shortcut.png | Bin 0 -> 1751 bytes cybersyn/info.json | 2 +- cybersyn/prototypes/gui-style.lua | 62 ++++++- cybersyn/scripts/gui.lua | 12 +- cybersyn/scripts/gui/main.lua | 24 +-- cybersyn/scripts/gui/manager.lua | 50 +++--- cybersyn/scripts/gui/stations.lua | 2 +- cybersyn/scripts/main.lua | 25 ++- cybersyn/scripts/migrations.lua | 9 +- 14 files changed, 307 insertions(+), 46 deletions(-) create mode 100644 cybersyn/constants.lua create mode 100644 cybersyn/graphics/gui/frame-action-icons.png create mode 100644 cybersyn/graphics/shortcut/ltn-manager-shortcut.png diff --git a/.vscode/launch.json b/.vscode/launch.json index b2a747e..c40e5ee 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -55,6 +55,12 @@ "debugadapter": true, "flib": true, }, - } + }, + { + "type": "factoriomod", + "request": "launch", + "name": "Factorio Debug (Modded)", + "modsPath": "~/.factorio/mods-debug/", + }, ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index e6ef28b..9c05daa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,7 +18,8 @@ ], "Lua.workspace.userThirdParty": [ "/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd", - "/home/mami/.config/Code/User/workspaceStorage/95c2a8450056100ba3db30ac2a468857/justarandomgeek.factoriomod-debug/sumneko-3rd" + "/home/mami/.config/Code/User/workspaceStorage/95c2a8450056100ba3db30ac2a468857/justarandomgeek.factoriomod-debug/sumneko-3rd", + "/home/mami/.config/Code/User/workspaceStorage/4e7db8f77e7d31cf7af01a542e707dfb/justarandomgeek.factoriomod-debug/sumneko-3rd" ], "Lua.diagnostics.globals": [ "__DebugAdapter", @@ -39,5 +40,5 @@ "Lua.diagnostics.disable": [ "lowercase-global" ], - "Lua.workspace.checkThirdParty": true + "Lua.workspace.checkThirdParty": false } diff --git a/cybersyn/constants.lua b/cybersyn/constants.lua new file mode 100644 index 0000000..98f9d75 --- /dev/null +++ b/cybersyn/constants.lua @@ -0,0 +1,152 @@ +local constants = {} + +constants.colors = { + caption = { + str = "255, 230, 192", + tbl = { 255, 230, 192 }, + }, + green = { + str = "69, 255, 69", + tbl = { 69, 255, 69 }, + }, + info = { + str = "128, 206, 240", + tbl = { 128, 206, 240 }, + }, + red = { + str = "255, 69, 69", + tbl = { 255, 69, 69 }, + }, + station_circle = { + str = "255, 50, 50, 190", + tbl = { 255, 50, 50, 190 }, + }, + yellow = { + str = "255, 240, 69", + tbl = { 255, 240, 69 }, + }, + white = { + str = "255, 255, 255", + tbl = { 255, 255, 255 }, + }, +} + +-- dictionary locale identifier -> dictionary of hardcoded GUI sizes +constants.gui = { + en = { + trains = { + train_id = 90, + status = 378, + composition = 200, + depot = 149, + shipment = 36 * 6, + shipment_columns = 6, + }, + stations = { + name = 238, + status = 53, + network_id = 84, + provided_requested = 36 * 6, + provided_requested_columns = 6, + shipments = 36 * 5, + shipments_columns = 5, + control_signals = 36 * 7, + control_signals_columns = 7, + }, + depots = { + name = 200, + network_id = 84, + status = 200, + trains = 200, + }, + history = { + train_id = 60, + route = 357, + depot = 160, + network_id = 84, + runtime = 68, + finished = 68, + shipment = (36 * 6), + shipment_checkbox_stretchy = true, + }, + alerts = { + time = 68, + train_id = 60, + route = 326, + network_id = 84, + type = 230, + type_checkbox_stretchy = true, + contents = 36 * 6, + }, + }, +} + +constants.gui_content_frame_height = 744 +constants.gui_inventory_table_height = 40 * 18 + +constants.gui_translations = { + delivering_to = { "gui.ltnm-delivering-to" }, + fetching_from = { "gui.ltnm-fetching-from" }, + loading_at = { "gui.ltnm-loading-at" }, + not_available = { "gui.ltnm-not-available" }, + parked_at_depot_with_residue = { "gui.ltnm-parked-at-depot-with-residue" }, + parked_at_depot = { "gui.ltnm-parked-at-depot" }, + returning_to_depot = { "gui.ltnm-returning-to-depot" }, + unloading_at = { "gui.ltnm-unloading-at" }, +} + +constants.input_sanitizers = { + ["%%"] = "%%%%", + ["%("] = "%%(", + ["%)"] = "%%)", + ["%.^[%*]"] = "%%.", + ["%+"] = "%%+", + ["%-"] = "%%-", + ["^[%.]%*"] = "%%*", + ["%?"] = "%%?", + ["%["] = "%%[", + ["%]"] = "%%]", + ["%^"] = "%%^", + ["%$"] = "%%$", +} + +constants.ltn_control_signals = { + ["ltn-depot"] = true, + ["ltn-depot-priority"] = true, + -- excluded because it's shown as a separate column + -- ["ltn-network-id"] = true, + ["ltn-min-train-length"] = true, + ["ltn-max-train-length"] = true, + ["ltn-max-trains"] = true, + ["ltn-provider-threshold"] = true, + ["ltn-provider-stack-threshold"] = true, + ["ltn-provider-priority"] = true, + ["ltn-locked-slots"] = true, + ["ltn-requester-threshold"] = true, + ["ltn-requester-stack-threshold"] = true, + ["ltn-requester-priority"] = true, + ["ltn-disable-warnings"] = true, +} + +constants.ltn_event_names = { + on_stops_updated = true, + on_dispatcher_updated = true, + -- on_delivery_pickup_complete = true, + on_delivery_completed = true, + on_delivery_failed = true, + -- on_dispatcher_no_train_found = true, + on_provider_missing_cargo = true, + on_provider_unscheduled_cargo = true, + on_requester_remaining_cargo = true, + on_requester_unscheduled_cargo = true, +} + +if script then + constants.open_station_gui_tooltip = { + "", + { "gui.ltnm-open-station-gui" }, + remote.interfaces["ltn-combinator"] and { "", "\n", { "gui.ltnm-open-ltn-combinator-gui" } } or nil, + } +end + +return constants diff --git a/cybersyn/data.lua b/cybersyn/data.lua index e4877d0..7cfd739 100644 --- a/cybersyn/data.lua +++ b/cybersyn/data.lua @@ -8,6 +8,8 @@ require('prototypes.entity') require('prototypes.signal') require('prototypes.misc') +require('prototypes.gui-style') + data:extend({ combinator_entity, combinator_out_entity, diff --git a/cybersyn/graphics/gui/frame-action-icons.png b/cybersyn/graphics/gui/frame-action-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..aad82a5730b80c6eb6abb712024d9ac3c4cfc9b8 GIT binary patch literal 1756 zcmV<21|#{2P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D260J5K~#8N?V4$5 zBt;m8GX`(t9S=wXinl)$&uA2NWmRx>MP)_Bh^Qcncp`}_p12zobeF}86;bfluCB1& z`ok;HDELE!jmjdJ1dk}*Q9Q@z?XKzV>FJ}Y(>;NmdEw=&>gn#czi+C#zN)Uuz`#Jq zd}4HT)Rg82TNvB2X!!utb%C+5F;i+pUteEGwOT!x;#u$%cmUi5R^X5DGx#Qa9&VhP znyO-B5!MWMf${NiQ))zSZ?BX7^z?M1et&9-AVy{^FqpxzBf;6iiA8a+Kd&ic9r8-RK@9D#NEsV#tq-3oITyb-GGg1_M^I1KfW zufxOO46SKTtcSD~z{8fJ&wT^^#1??_y69y%1YO02EukL#Rag@jwlg*rJY-Y!V*`Nm zTVvFhPW2AdL;dY3cm+HiE`S%qhvD}y3ia2TxD{}|Y5K8UfB-yzx!J31!td~2xQZ9t zuilXexNdvQweWVht&YXuH@ZNVDaUpJ0+6cD3ocfl>#X!SFVJsj0XT6C<~qL?K#^U5 zIW;!1+Xd9JA8r9!~nvlMaIFGhr;p`S(mY6~_5Dpi`d@Ayyyft@MraPWsUR zoC`bsqK6;gO224@t6`S-zsAO)>H5(C9BFI~>-qP8F=ZRP1~q&GHCu|~eo*
xq>%woS5;3H$>P^dnRX6i=+ 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 literal 0 HcmV?d00001 diff --git a/cybersyn/info.json b/cybersyn/info.json index f3bca88..e1a036f 100644 --- a/cybersyn/info.json +++ b/cybersyn/info.json @@ -1,6 +1,6 @@ { "name": "cybersyn", - "version": "1.2.13", + "version": "1.2.14", "title": "Project Cybersyn", "author": "Mami", "factorio_version": "1.1", diff --git a/cybersyn/prototypes/gui-style.lua b/cybersyn/prototypes/gui-style.lua index 91eb2d0..b4ce7da 100644 --- a/cybersyn/prototypes/gui-style.lua +++ b/cybersyn/prototypes/gui-style.lua @@ -1,6 +1,38 @@ local constants = require("constants") -local util = require("prototypes.util") + +local data_util = require("__flib__.data-util") + +local util = {} + +for key, value in pairs(require("__core__.lualib.util")) do + util[key] = value +end + +util.paths = { + nav_icons = "__cybersyn__/graphics/gui/frame-action-icons.png", + shortcut_icons = "__cybersyn__/graphics/shortcut/ltn-manager-shortcut.png", +} + +util.empty_checkmark = { + filename = data_util.empty_image, + priority = "very-low", + width = 1, + height = 1, + frame_count = 1, + scale = 8, +} + + +data:extend({ + data_util.build_sprite("ltnm_pin_black", { 0, 32 }, util.paths.nav_icons, 32), + data_util.build_sprite("ltnm_pin_white", { 32, 32 }, util.paths.nav_icons, 32), + data_util.build_sprite("ltnm_refresh_black", { 0, 0 }, util.paths.nav_icons, 32), + data_util.build_sprite("ltnm_refresh_white", { 32, 0 }, util.paths.nav_icons, 32), +}) + + + local styles = data.raw["gui-style"]["default"] @@ -327,3 +359,31 @@ styles.ltnm_tabbed_pane = { bottom_padding = 8, }, } + +data:extend({ + -- custom inputs + --{ + -- type = "custom-input", + -- name = "ltnm-toggle-gui", + -- key_sequence = "CONTROL + T", + --}, + --{ + -- type = "custom-input", + -- name = "ltnm-linked-focus-search", + -- key_sequence = "", + -- linked_game_control = "focus-search", + --}, + -- shortcuts + { + type = "shortcut", + name = "ltnm-toggle-gui", + icon = data_util.build_sprite(nil, { 0, 0 }, util.paths.shortcut_icons, 32, 2), + disabled_icon = data_util.build_sprite(nil, { 48, 0 }, util.paths.shortcut_icons, 32, 2), + small_icon = data_util.build_sprite(nil, { 0, 32 }, util.paths.shortcut_icons, 24, 2), + disabled_small_icon = data_util.build_sprite(nil, { 36, 32 }, util.paths.shortcut_icons, 24, 2), + toggleable = true, + action = "lua", + --associated_control_input = "ltnm-toggle-gui", + technology_to_unlock = "cybersyn-train-network", + }, +}) diff --git a/cybersyn/scripts/gui.lua b/cybersyn/scripts/gui.lua index 5baadea..6265a07 100644 --- a/cybersyn/scripts/gui.lua +++ b/cybersyn/scripts/gui.lua @@ -183,12 +183,12 @@ end function register_gui_actions() flib_gui.add_handlers({ - ["close"] = handle_close, - ["drop_down"] = handle_drop_down, - ["pr_switch"] = handle_pr_switch, - ["network"] = handle_network, - ["setting"] = handle_setting, - ["setting_flip"] = handle_setting_flip, + ["comb_close"] = handle_close, + ["comb_drop_down"] = handle_drop_down, + ["comb_pr_switch"] = handle_pr_switch, + ["comb_network"] = handle_network, + ["comb_setting"] = handle_setting, + ["comb_setting_flip"] = handle_setting_flip, }) flib_gui.handle_events() script.on_event(defines.events.on_gui_opened, on_gui_opened) diff --git a/cybersyn/scripts/gui/main.lua b/cybersyn/scripts/gui/main.lua index 5a42e5b..e94adc1 100644 --- a/cybersyn/scripts/gui/main.lua +++ b/cybersyn/scripts/gui/main.lua @@ -4,9 +4,11 @@ local mod_gui = require("__core__.lualib.mod-gui") local manager = require("scripts.gui.manager") --- @class Manager +--- @field players table --- @field item_order table --- @class PlayerData +--- @field is_manager_open boolean --- @field refs {[string]: LuaGuiElement}? --- @field search_query string? --- @field search_network_name string? @@ -33,8 +35,8 @@ local function top_left_button_update(player, player_data) name = "top_left_button", style = "mis_mod_gui_button_green", sprite = "mis_configure_white", - tooltip = { "", "\n", { "mis-config-gui.configure-tooltip" } }, - handler = manager.handle.toggle, + tooltip = { "", "\n", { "cybersyn.gui.configure-tooltip" } }, + handler = manager.handle.manager_toggle, }) end end @@ -45,7 +47,7 @@ local manager_gui = {} function manager_gui.on_lua_shortcut(e) if e.prototype_name == "ltnm-toggle-gui" then - manager.wrapper(e, manager.handle.toggle) + manager.wrapper(e, manager.handle.manager_toggle) end end @@ -61,14 +63,14 @@ function manager_gui.on_player_created(e) pinning = false, refs = manager.create(player), } - global.manager_data.players[e.player_index] = player_data + global.manager.players[e.player_index] = player_data manager.update(global, player, player_data) - top_left_button_update(player, player_data) + --top_left_button_update(player, player_data) end function manager_gui.on_player_removed(e) - global.manager_data.players[e.player_index] = nil + global.manager.players[e.player_index] = nil end --script.on_event(defines.events.on_player_joined_game, function(e) @@ -83,7 +85,7 @@ function manager_gui.on_runtime_mod_setting_changed(e) local player = game.get_player(e.player_index) if not player then return end - local player_data = global.manager_data.players[e.player_index] + local player_data = global.manager.players[e.player_index] player_data.disable_top_left_button = player.mod_settings["cybersyn-disable-top-left-button"].value top_left_button_update(player, player_data) end @@ -121,12 +123,14 @@ local function init_items(manager) end -function manager.on_migration() +function manager_gui.on_migration() init_items(global.manager) end -function manager.on_init() - global.manager = {} +function manager_gui.on_init() + global.manager = { + players = {}, + } init_items(global.manager) end --gui.handle_events() diff --git a/cybersyn/scripts/gui/manager.lua b/cybersyn/scripts/gui/manager.lua index bd421cb..8cc8f98 100644 --- a/cybersyn/scripts/gui/manager.lua +++ b/cybersyn/scripts/gui/manager.lua @@ -28,13 +28,13 @@ function manager.create(player) type = "frame", direction = "vertical", visible = false, - handler = manager.handle.close, + handler = manager.handle.manager_close, children = { { name = "manager_titlebar", type = "flow", style = "flib_titlebar_flow", - handler = manager.handle.titlebar_click, + handler = manager.handle.manager_titlebar_click, children = { { type = "label", style = "frame_title", caption = { "mod-name.LtnManager" }, ignored_by_interaction = true }, { type = "empty-widget", style = "flib_titlebar_drag_handle", ignored_by_interaction = true }, @@ -47,9 +47,9 @@ function manager.create(player) tooltip = { "gui.ltnm-dispatcher-disabled-description" }, visible = not settings.global["cybersyn-enable-planner"].value, }, - templates.frame_action_button("manager_pin_button", "ltnm_pin", { "gui.ltnm-keep-open" }, manager.handle.pin),--on_gui_clicked - templates.frame_action_button("manager_refresh_button", "ltnm_refresh", { "gui.ltnm-refresh-tooltip" }, manager.handle.refresh_click),--on_gui_clicked - templates.frame_action_button(nil, "utility/close", { "gui.close-instruction" }, manager.handle.close),--on_gui_clicked + templates.frame_action_button("manager_pin_button", "ltnm_pin", { "gui.ltnm-keep-open" }, manager.handle.manager_pin),--on_gui_clicked + templates.frame_action_button("manager_refresh_button", "ltnm_refresh", { "gui.ltnm-refresh-tooltip" }, manager.handle.manager_refresh_click),--on_gui_clicked + templates.frame_action_button(nil, "utility/close", { "gui.close-instruction" }, manager.handle.manager_close),--on_gui_clicked }, }, { @@ -66,7 +66,7 @@ function manager.create(player) name = "manager_text_search_field", type = "textfield", clear_and_focus_on_right_click = true, - handler = manager.handle.update_text_search, --on_gui_text_changed + handler = manager.handle.manager_update_text_search, --on_gui_text_changed }, { type = "empty-widget", style = "flib_horizontal_pusher" }, { type = "label", style = "caption_label", caption = { "gui.ltnm-network-id-label" } }, @@ -78,13 +78,13 @@ function manager.create(player) allow_negative = true, clear_and_focus_on_right_click = true, text = "-1", - handler = manager.handle.update_network_mask, --on_gui_text_changed + handler = manager.handle.manager_update_network_mask, --on_gui_text_changed }, { type = "label", style = "caption_label", caption = { "gui.ltnm-surface-label" } }, { name = "manager_surface_dropdown", type = "drop-down", - handler = manager.handle.update_surface, --on_gui_selection_state_changed + handler = manager.handle.manager_update_surface, --on_gui_selection_state_changed }, }, }, @@ -111,8 +111,8 @@ end --- @param player LuaPlayer --- @param player_data PlayerData function manager.update(map_data, player, player_data) - local tab = trains_tab.build(map_data, player_data) - gui.add(_, tab, player_data.refs) + --local tab = trains_tab.build(map_data, player_data) + --gui.add(_, tab, player_data.refs) end @@ -123,7 +123,7 @@ manager.handle = {} function manager.wrapper(e, handler) local player = game.get_player(e.player_index) if not player then return end - local player_data = global.manager_data.players[e.player_index] + local player_data = global.manager.players[e.player_index] handler(player, player_data, player_data.refs, e) end @@ -143,7 +143,7 @@ end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.open(player, player_data, refs) +function manager.handle.manager_open(player, player_data, refs) refs.manager_window.bring_to_front() refs.manager_window.visible = true player_data.visible = true @@ -152,6 +152,7 @@ function manager.handle.open(player, player_data, refs) player.opened = refs.manager_window end + player_data.is_manager_open = true player.set_shortcut_toggled("ltnm-toggle-gui", true) end @@ -159,7 +160,7 @@ end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.close(player, player_data, refs) +function manager.handle.manager_close(player, player_data, refs) if player_data.pinning then return end @@ -171,27 +172,32 @@ function manager.handle.close(player, player_data, refs) player.opened = nil end + player_data.is_manager_open = false player.set_shortcut_toggled("ltnm-toggle-gui", false) end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.toggle(player, player_data, refs) - +function manager.handle.manager_toggle(player, player_data, refs) + if player_data.is_manager_open then + manager.handle.manager_close(player, player_data, refs) + else + manager.handle.manager_open(player, player_data, refs) + end end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.recenter(player, player_data, refs) +function manager.handle.manager_recenter(player, player_data, refs) refs.window.force_auto_center() end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.toggle_auto_refresh(player, player_data, refs) +function manager.handle.manager_toggle_auto_refresh(player, player_data, refs) player_data.auto_refresh = not player_data.auto_refresh toggle_fab(refs.manager_refresh_button, "ltnm_refresh", player_data.auto_refresh) end @@ -199,7 +205,7 @@ end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.toggle_pinned(player, player_data, refs) +function manager.handle.manager_toggle_pinned(player, player_data, refs) player_data.pinned = not player_data.pinned toggle_fab(refs.manager_pin_button, "ltnm_pin", player_data.pinned) end @@ -208,7 +214,7 @@ end --- @param player_data PlayerData --- @param refs table --- @param e GuiEventData -function manager.handle.update_text_search(player, player_data, refs, e) +function manager.handle.manager_update_text_search(player, player_data, refs, e) local query = e.text -- Input sanitization for pattern, replacement in pairs(constants.input_sanitizers) do @@ -221,7 +227,7 @@ end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.update_network_name(player, player_data, refs) +function manager.handle.manager_update_network_name(player, player_data, refs) local signal = refs.manager_network_name.elem_value if signal then player_data.search_network_name = signal.name @@ -232,13 +238,13 @@ end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.update_network_mask(player, player_data, refs) +function manager.handle.manager_update_network_mask(player, player_data, refs) player_data.search_network_mask = tonumber(refs.manager_network_mask_field.text) or -1 end --- @param player LuaPlayer --- @param player_data PlayerData --- @param refs table -function manager.handle.update_surface(player, player_data, refs) +function manager.handle.manager_update_surface(player, player_data, refs) local i = refs.manager_surface_dropdown.selected_index player_data.search_surface_idx = i--TODO: fix this end diff --git a/cybersyn/scripts/gui/stations.lua b/cybersyn/scripts/gui/stations.lua index c4fbf91..ef5341f 100644 --- a/cybersyn/scripts/gui/stations.lua +++ b/cybersyn/scripts/gui/stations.lua @@ -6,7 +6,7 @@ local templates = require("scripts.gui.templates") local stations_tab = {} -function stations_tab.build(widths) +function stations_tab.create(widths) return { tab = { type = "tab", diff --git a/cybersyn/scripts/main.lua b/cybersyn/scripts/main.lua index ce90199..aac6038 100644 --- a/cybersyn/scripts/main.lua +++ b/cybersyn/scripts/main.lua @@ -1,9 +1,12 @@ --By Mami +local manager = require('gui.main') + local ceil = math.ceil local table_insert = table.insert local table_remove = table.remove + ---@param map_data MapData ---@param stop LuaEntity ---@param comb LuaEntity @@ -835,6 +838,7 @@ local function on_settings_changed(event) script.on_nth_tick(nil) end end + manager.on_runtime_mod_setting_changed(event) interface_raise_on_mod_settings_changed(event) end @@ -898,6 +902,9 @@ local function main() script.on_nth_tick(nil) end + + local MANAGER_ENABLED = true + script.on_init(function() local setting = settings.global["cybersyn-invert-sign"] setting.value = false @@ -905,13 +912,29 @@ local function main() mod_settings.invert_sign = false init_global() setup_se_compat() + if MANAGER_ENABLED then + manager.on_init() + end end) - script.on_configuration_changed(on_config_changed) + + script.on_configuration_changed(function(e) + on_config_changed(e) + if MANAGER_ENABLED then + manager.on_migration() + end + end) script.on_load(function() setup_se_compat() end) + + if MANAGER_ENABLED then + script.on_event(defines.events.on_player_removed, manager.on_player_removed) + script.on_event(defines.events.on_player_created, manager.on_player_created) + script.on_event(defines.events.on_lua_shortcut, manager.on_lua_shortcut) + end + end diff --git a/cybersyn/scripts/migrations.lua b/cybersyn/scripts/migrations.lua index a83c9d0..18a194b 100644 --- a/cybersyn/scripts/migrations.lua +++ b/cybersyn/scripts/migrations.lua @@ -1,5 +1,6 @@ --By Mami local flib_migration = require("__flib__.migration") +local manager_gui = require('gui.main') local migrations_table = { @@ -292,7 +293,13 @@ local migrations_table = { is_registered[id] = true end end - end + end, + ["1.2.14"] = function() + manager_gui.on_init() + for i, v in pairs(game.players) do + manager_gui.on_player_created({player_index = i}) + end + end, } --STATUS_R_TO_D = 5