mirror of
https://github.com/Xevion/project-cybersyn.git
synced 2026-01-31 02:25:18 -06:00
Everything but configurable mod settings should be good to go, potential release candidate.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
[mod-name]
|
[mod-name]
|
||||||
cybersyn=Cybersyn GUI
|
cybersyn=Project Cybersyn
|
||||||
|
|
||||||
[controls]
|
[controls]
|
||||||
cybersyn-toggle-gui=Toggle Cybersyn Manager
|
cybersyn-toggle-gui=Toggle Cybersyn Manager
|
||||||
@@ -36,6 +36,7 @@ inventory=Inventory
|
|||||||
keep-open=Keep open
|
keep-open=Keep open
|
||||||
loading-at=Loading at
|
loading-at=Loading at
|
||||||
name=Name
|
name=Name
|
||||||
|
network-name-label=Network:
|
||||||
network-id-label=Network ID:
|
network-id-label=Network ID:
|
||||||
network-id=Network ID
|
network-id=Network ID
|
||||||
no-alerts=[img=warning-white] No alerts
|
no-alerts=[img=warning-white] No alerts
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ SETTING_DISABLE_DEPOT_BYPASS = 6
|
|||||||
SETTING_ENABLE_SLOT_BARRING = 7
|
SETTING_ENABLE_SLOT_BARRING = 7
|
||||||
|
|
||||||
NETWORK_SIGNAL_DEFAULT = {name="signal-A", type="virtual"}
|
NETWORK_SIGNAL_DEFAULT = {name="signal-A", type="virtual"}
|
||||||
|
NETWORK_SIGNAL_GUI_DEFAULT = {name="signal-each", type="virtual"}
|
||||||
|
NETWORK_ANYTHING = "signal-anything"
|
||||||
NETWORK_EACH = "signal-each"
|
NETWORK_EACH = "signal-each"
|
||||||
INACTIVITY_TIME = 100
|
INACTIVITY_TIME = 100
|
||||||
LOCK_TRAIN_TIME = 60*60*60*24*7
|
LOCK_TRAIN_TIME = 60*60*60*24*7
|
||||||
|
|||||||
@@ -124,6 +124,8 @@
|
|||||||
---@field public stuck_train_alert_enabled boolean --interface setting
|
---@field public stuck_train_alert_enabled boolean --interface setting
|
||||||
---@field public react_to_train_at_incorrect_station boolean --interface setting
|
---@field public react_to_train_at_incorrect_station boolean --interface setting
|
||||||
---@field public react_to_train_early_to_depot boolean --interface setting
|
---@field public react_to_train_early_to_depot boolean --interface setting
|
||||||
|
---@field public enable_manager boolean
|
||||||
|
---@field public manager_tps double --manager tick rate
|
||||||
|
|
||||||
--if this is uncommented it means there are migrations to write
|
--if this is uncommented it means there are migrations to write
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ function inventory_tab.build(map_data, player_data)
|
|||||||
|
|
||||||
local refs = player_data.refs
|
local refs = player_data.refs
|
||||||
|
|
||||||
|
local search_query = player_data.search_query
|
||||||
local search_item = player_data.search_item
|
local search_item = player_data.search_item
|
||||||
local search_network_name = player_data.search_network_name
|
local search_network_name = player_data.search_network_name
|
||||||
local search_network_mask = player_data.search_network_mask
|
local search_network_mask = player_data.search_network_mask
|
||||||
@@ -55,10 +56,28 @@ function inventory_tab.build(map_data, player_data)
|
|||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if search_query then
|
||||||
|
if not string.match(entity.backer_name, search_query) then
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- move surface comparison up higher in query to short circuit query earlier if surface doesn't match
|
||||||
|
if search_surface_idx then
|
||||||
|
if search_surface_idx == -1 then
|
||||||
|
goto has_match
|
||||||
|
elseif entity.surface.index ~= search_surface_idx then
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
::has_match::
|
||||||
|
end
|
||||||
if search_network_name then
|
if search_network_name then
|
||||||
|
if search_network_name == (NETWORK_EACH or NETWORK_ANYTHING) then
|
||||||
|
goto has_match
|
||||||
|
end
|
||||||
if search_network_name ~= station.network_name then
|
if search_network_name ~= station.network_name then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
::has_match::
|
||||||
local train_flag = get_network_flag(station, search_network_name)
|
local train_flag = get_network_flag(station, search_network_name)
|
||||||
if not bit32.btest(search_network_mask, train_flag) then
|
if not bit32.btest(search_network_mask, train_flag) then
|
||||||
goto continue
|
goto continue
|
||||||
@@ -78,12 +97,6 @@ function inventory_tab.build(map_data, player_data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if search_surface_idx then
|
|
||||||
if entity.surface.index ~= search_surface_idx then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if search_item then
|
if search_item then
|
||||||
if not station.deliveries then
|
if not station.deliveries then
|
||||||
goto continue
|
goto continue
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ function manager.create(player)
|
|||||||
handler = manager.handle.manager_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 = "empty-widget", style = "flib_horizontal_pusher" },
|
||||||
|
{ type = "label", style = "caption_label", caption = { "cybersyn-gui.network-name-label" } },
|
||||||
|
{ type= "choose-elem-button", name="network", style="slot_button_in_shallow_frame", elem_type="signal", tooltip={"cybersyn-gui.network-tooltip"}, signal=NETWORK_SIGNAL_GUI_DEFAULT, handler=manager.handle.manager_update_network_name, },
|
||||||
{ type = "label", style = "caption_label", caption = { "cybersyn-gui.network-id-label" } },
|
{ type = "label", style = "caption_label", caption = { "cybersyn-gui.network-id-label" } },
|
||||||
{
|
{
|
||||||
name = "manager_network_mask_field",
|
name = "manager_network_mask_field",
|
||||||
@@ -110,9 +112,45 @@ function manager.create(player)
|
|||||||
return refs
|
return refs
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function manager.build(player_data)
|
||||||
|
local refs = player_data.refs
|
||||||
|
-- Surface dropdown
|
||||||
|
--- @type LuaGuiElement
|
||||||
|
local surface_dropdown = refs.manager_surface_dropdown
|
||||||
|
local surfaces = game.surfaces
|
||||||
|
local selected_surface_id = player_data.search_surface_idx
|
||||||
|
local currently_selected_index = surface_dropdown.selected_index
|
||||||
|
local currently_selected_surface = nil
|
||||||
|
if currently_selected_index ~= (nil or 0) then
|
||||||
|
currently_selected_surface = surface_dropdown.get_item(currently_selected_index)
|
||||||
|
end
|
||||||
|
surface_dropdown.clear_items()
|
||||||
|
i = 0
|
||||||
|
for name, _ in pairs(surfaces) do
|
||||||
|
i = i + 1
|
||||||
|
surface_dropdown.add_item(name, i)
|
||||||
|
--reselect same surface
|
||||||
|
if name == currently_selected_surface then
|
||||||
|
refs.manager_surface_dropdown.selected_index = i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Validate that the selected index still exist
|
||||||
|
if selected_surface_id then
|
||||||
|
local selected_surface = game.get_surface(selected_surface_id)
|
||||||
|
-- If the surface was invalidated since last update, reset to all
|
||||||
|
if not selected_surface then
|
||||||
|
player_data.search_surface_idx = -1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
player_data.search_surface_idx = -1
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
--- @param map_data MapData
|
--- @param map_data MapData
|
||||||
--- @param player_data PlayerData
|
--- @param player_data PlayerData
|
||||||
function manager.update(map_data, player_data)
|
function manager.update(map_data, player_data)
|
||||||
|
manager.build(player_data)
|
||||||
stations_tab.build(map_data, player_data)
|
stations_tab.build(map_data, player_data)
|
||||||
inventory_tab.build(map_data, player_data)
|
inventory_tab.build(map_data, player_data)
|
||||||
end
|
end
|
||||||
@@ -235,8 +273,9 @@ end
|
|||||||
--- @param player LuaPlayer
|
--- @param player LuaPlayer
|
||||||
--- @param player_data PlayerData
|
--- @param player_data PlayerData
|
||||||
--- @param refs table<string, LuaGuiElement>
|
--- @param refs table<string, LuaGuiElement>
|
||||||
function manager.handle.manager_update_network_name(player, player_data, refs)
|
function manager.handle.manager_update_network_name(player, player_data, refs, e)
|
||||||
local signal = refs.manager_network_name.elem_value
|
local element = e.element
|
||||||
|
local signal = element.elem_value
|
||||||
if signal then
|
if signal then
|
||||||
player_data.search_network_name = signal.name
|
player_data.search_network_name = signal.name
|
||||||
else
|
else
|
||||||
@@ -246,15 +285,25 @@ end
|
|||||||
--- @param player LuaPlayer
|
--- @param player LuaPlayer
|
||||||
--- @param player_data PlayerData
|
--- @param player_data PlayerData
|
||||||
--- @param refs table<string, LuaGuiElement>
|
--- @param refs table<string, LuaGuiElement>
|
||||||
function manager.handle.manager_update_network_mask(player, player_data, refs)
|
function manager.handle.manager_update_network_mask(player, player_data, refs, e)
|
||||||
player_data.search_network_mask = tonumber(refs.manager_network_mask_field.text) or -1
|
player_data.search_network_mask = tonumber(e.text) or -1
|
||||||
end
|
end
|
||||||
--- @param player LuaPlayer
|
--- @param player LuaPlayer
|
||||||
--- @param player_data PlayerData
|
--- @param player_data PlayerData
|
||||||
--- @param refs table<string, LuaGuiElement>
|
--- @param refs table<string, LuaGuiElement>
|
||||||
function manager.handle.manager_update_surface(player, player_data, refs)
|
function manager.handle.manager_update_surface(player, player_data, refs, e)
|
||||||
local i = refs.manager_surface_dropdown.selected_index
|
--- @type LuaGuiElement
|
||||||
player_data.search_surface_idx = i--TODO: fix this
|
local element = e.element
|
||||||
|
local i = element.selected_index
|
||||||
|
local refs = player_data.refs
|
||||||
|
local surface_id = -1
|
||||||
|
if i > 0 then
|
||||||
|
local surface_name = refs.manager_surface_dropdown.get_item(i)
|
||||||
|
local surface = game.get_surface(surface_name)
|
||||||
|
surface_id = surface.index
|
||||||
|
end
|
||||||
|
|
||||||
|
player_data.search_surface_idx = surface_id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ function stations_tab.build(map_data, player_data)
|
|||||||
local widths = constants.gui["en"]
|
local widths = constants.gui["en"]
|
||||||
local refs = player_data.refs
|
local refs = player_data.refs
|
||||||
|
|
||||||
|
local search_query = player_data.search_query
|
||||||
local search_item = player_data.search_item
|
local search_item = player_data.search_item
|
||||||
local search_network_name = player_data.search_network_name
|
local search_network_name = player_data.search_network_name
|
||||||
local search_network_mask = player_data.search_network_mask
|
local search_network_mask = player_data.search_network_mask
|
||||||
@@ -78,10 +79,33 @@ function stations_tab.build(map_data, player_data)
|
|||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if search_query then
|
||||||
|
if not string.match(entity.backer_name, search_query) then
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- move surface comparison up higher in query to short circuit query earlier if surface doesn't match; this can exclude hundreds of stations instantly in SE
|
||||||
|
if search_surface_idx then
|
||||||
|
if search_surface_idx == -1 then
|
||||||
|
goto has_match
|
||||||
|
elseif entity.surface.index ~= search_surface_idx then
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
::has_match::
|
||||||
|
end
|
||||||
|
|
||||||
if search_network_name then
|
if search_network_name then
|
||||||
|
--setting default for GUI to NETWORK_EACH, which will match all
|
||||||
|
if search_network_name == (NETWORK_EACH or NETWORK_ANYTHING) then
|
||||||
|
goto has_match
|
||||||
|
end
|
||||||
if search_network_name ~= station.network_name then
|
if search_network_name ~= station.network_name then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
::has_match::
|
||||||
local train_flag = get_network_flag(station, search_network_name)
|
local train_flag = get_network_flag(station, search_network_name)
|
||||||
if not bit32.btest(search_network_mask, train_flag) then
|
if not bit32.btest(search_network_mask, train_flag) then
|
||||||
goto continue
|
goto continue
|
||||||
@@ -101,11 +125,6 @@ function stations_tab.build(map_data, player_data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if search_surface_idx then
|
|
||||||
if entity.surface.index ~= search_surface_idx then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if search_item then
|
if search_item then
|
||||||
if not station.deliveries then
|
if not station.deliveries then
|
||||||
|
|||||||
@@ -933,7 +933,7 @@ local function main()
|
|||||||
script.on_event(defines.events.on_player_removed, manager.on_player_removed)
|
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_player_created, manager.on_player_created)
|
||||||
script.on_event(defines.events.on_lua_shortcut, manager.on_lua_shortcut)
|
script.on_event(defines.events.on_lua_shortcut, manager.on_lua_shortcut)
|
||||||
script.on_nth_tick(600, function() --TODO: tick value needs to be converted to mod setting
|
script.on_nth_tick(60, function() --TODO: tick value needs to be converted to mod setting
|
||||||
manager.tick(global)
|
manager.tick(global)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user