got ltn manager to open the manager

This commit is contained in:
mamoniot
2023-03-03 15:45:23 -05:00
parent a9ac0b4fb0
commit c3b2502b87
14 changed files with 307 additions and 46 deletions

View File

@@ -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)

View File

@@ -4,9 +4,11 @@ local mod_gui = require("__core__.lualib.mod-gui")
local manager = require("scripts.gui.manager")
--- @class Manager
--- @field players table<int, PlayerData>
--- @field item_order table<string, int>
--- @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()

View File

@@ -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<string, LuaGuiElement>
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<string, LuaGuiElement>
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<string, LuaGuiElement>
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<string, LuaGuiElement>
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<string, LuaGuiElement>
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<string, LuaGuiElement>
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<string, LuaGuiElement>
--- @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<string, LuaGuiElement>
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<string, LuaGuiElement>
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<string, LuaGuiElement>
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

View File

@@ -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",

View File

@@ -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

View File

@@ -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