mirror of
https://github.com/Xevion/project-cybersyn.git
synced 2025-12-09 00:08:04 -06:00
fixed massive number of things
This commit is contained in:
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
@@ -13,12 +13,9 @@
|
||||
"~/.steam/steam/steamapps/common/Factorio/data/core/lualib",
|
||||
"./.vscode/factorio",
|
||||
"./.vscode/flib",
|
||||
"/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/library",
|
||||
"/home/mami/.config/Code/User/workspaceStorage/95c2a8450056100ba3db30ac2a468857/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/library"
|
||||
"/home/mami/.config/Code/User/workspaceStorage/4e7db8f77e7d31cf7af01a542e707dfb/justarandomgeek.factoriomod-debug/sumneko-3rd"
|
||||
],
|
||||
"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/4e7db8f77e7d31cf7af01a542e707dfb/justarandomgeek.factoriomod-debug/sumneko-3rd"
|
||||
],
|
||||
"Lua.diagnostics.globals": [
|
||||
@@ -36,7 +33,7 @@
|
||||
"Lua.runtime.special": {
|
||||
"__object_name": "type"
|
||||
},
|
||||
"Lua.runtime.plugin": "/home/mami/.config/Code/User/workspaceStorage/95c2a8450056100ba3db30ac2a468857/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/plugin.lua",
|
||||
"Lua.runtime.plugin": "/home/mami/.config/Code/User/workspaceStorage/4e7db8f77e7d31cf7af01a542e707dfb/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/plugin.lua",
|
||||
"Lua.diagnostics.disable": [
|
||||
"lowercase-global"
|
||||
],
|
||||
|
||||
@@ -93,17 +93,17 @@ function create_delivery(map_data, r_station_id, p_station_id, train_id, manifes
|
||||
if item_i > 1 or r_is_each or p_is_each then
|
||||
local f, a
|
||||
if r_is_each then
|
||||
f, a = pairs(r_station.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(r_station.network_mask--[[@as {[string]: int}]])
|
||||
if p_is_each then
|
||||
for network_name, _ in f, a do
|
||||
local item_network_name = network_name..":"..item.name
|
||||
economy.all_r_stations[item_network_name] = nil
|
||||
economy.all_p_stations[item_network_name] = nil
|
||||
end
|
||||
f, a = pairs(p_station.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(p_station.network_mask--[[@as {[string]: int}]])
|
||||
end
|
||||
elseif p_is_each then
|
||||
f, a = pairs(p_station.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(p_station.network_mask--[[@as {[string]: int}]])
|
||||
else
|
||||
f, a = once, r_station.network_name
|
||||
end
|
||||
@@ -350,8 +350,8 @@ local function tick_dispatch(map_data, mod_settings)
|
||||
goto p_continue
|
||||
end
|
||||
|
||||
p_flag = get_network_flag(p_station, network_name)
|
||||
r_flag = get_network_flag(r_station, network_name)
|
||||
p_flag = get_network_mask(p_station, network_name)
|
||||
r_flag = get_network_mask(r_station, network_name)
|
||||
netand = band(p_flag, r_flag)
|
||||
if netand == 0 then
|
||||
goto p_continue
|
||||
@@ -413,7 +413,7 @@ local function tick_dispatch(map_data, mod_settings)
|
||||
if trains then
|
||||
for train_id, _ in pairs(trains) do
|
||||
local train = map_data.trains[train_id]
|
||||
local train_flag = get_network_flag(train, network_name)
|
||||
local train_flag = get_network_mask(train, network_name)
|
||||
if not btest(netand, train_flag) or train.se_is_being_teleported then
|
||||
goto train_continue
|
||||
end
|
||||
@@ -551,9 +551,9 @@ local function tick_poll_station(map_data, mod_settings)
|
||||
station.locked_slots = mod_settings.locked_slots
|
||||
local is_each = station.network_name == NETWORK_EACH
|
||||
if is_each then
|
||||
station.network_flag = {}
|
||||
station.network_mask = {}
|
||||
else
|
||||
station.network_flag = mod_settings.network_flag
|
||||
station.network_mask = mod_settings.network_mask
|
||||
end
|
||||
local comb1_signals, comb2_signals = get_signals(station)
|
||||
station.tick_signals = comb1_signals
|
||||
@@ -594,12 +594,12 @@ local function tick_poll_station(map_data, mod_settings)
|
||||
elseif item_name == LOCKED_SLOTS then
|
||||
station.locked_slots = max(item_count, 0)
|
||||
elseif is_each then
|
||||
station.network_flag[item_name] = item_count
|
||||
station.network_mask[item_name] = item_count
|
||||
end
|
||||
comb1_signals[k] = nil
|
||||
end
|
||||
if item_name == station.network_name then
|
||||
station.network_flag = item_count
|
||||
station.network_mask = item_count
|
||||
comb1_signals[k] = nil
|
||||
end
|
||||
else
|
||||
@@ -624,7 +624,7 @@ local function tick_poll_station(map_data, mod_settings)
|
||||
is_requesting_nothing = false
|
||||
local f, a
|
||||
if station.network_name == NETWORK_EACH then
|
||||
f, a = pairs(station.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(station.network_mask--[[@as {[string]: int}]])
|
||||
else
|
||||
f, a = once, station.network_name
|
||||
end
|
||||
@@ -645,7 +645,7 @@ local function tick_poll_station(map_data, mod_settings)
|
||||
if station.is_p and effective_item_count > 0 and item_count > 0 then
|
||||
local f, a
|
||||
if station.network_name == NETWORK_EACH then
|
||||
f, a = pairs(station.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(station.network_mask--[[@as {[string]: int}]])
|
||||
else
|
||||
f, a = once, station.network_name
|
||||
end
|
||||
|
||||
@@ -57,8 +57,8 @@ end
|
||||
---@param e Station|Refueler|Train
|
||||
---@param network_name string
|
||||
---@return int
|
||||
function get_network_flag(e, network_name)
|
||||
return e.network_name == NETWORK_EACH and (e.network_flag[network_name] or 0) or e.network_flag--[[@as int]]
|
||||
function get_network_mask(e, network_name)
|
||||
return e.network_name == NETWORK_EACH and (e.network_mask[network_name] or 0) or e.network_mask--[[@as int]]
|
||||
end
|
||||
|
||||
|
||||
@@ -400,9 +400,9 @@ function set_station_from_comb(station)
|
||||
if station.network_name ~= new_name then
|
||||
station.network_name = new_name
|
||||
if station.network_name == NETWORK_EACH then
|
||||
station.network_flag = {}
|
||||
station.network_mask = {}
|
||||
else
|
||||
station.network_flag = 0
|
||||
station.network_mask = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -426,9 +426,9 @@ function set_train_from_comb(mod_settings, train, comb)
|
||||
|
||||
local is_each = train.network_name == NETWORK_EACH
|
||||
if is_each then
|
||||
train.network_flag = {}
|
||||
train.network_mask = {}
|
||||
else
|
||||
train.network_flag = mod_settings.network_flag
|
||||
train.network_mask = mod_settings.network_mask
|
||||
end
|
||||
train.priority = mod_settings.priority
|
||||
local signals = comb.get_merged_signals(defines.circuit_connector_id.combinator_input)
|
||||
@@ -443,12 +443,12 @@ function set_train_from_comb(mod_settings, train, comb)
|
||||
train.priority = item_count
|
||||
elseif is_each then
|
||||
if item_name ~= REQUEST_THRESHOLD and item_name ~= LOCKED_SLOTS then
|
||||
train.network_flag[item_name] = item_count
|
||||
train.network_mask[item_name] = item_count
|
||||
end
|
||||
end
|
||||
end
|
||||
if item_name == network_name then
|
||||
train.network_flag = item_count
|
||||
train.network_mask = item_count
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -464,7 +464,7 @@ function set_refueler_from_comb(map_data, mod_settings, id, refueler)
|
||||
local bits = params.second_constant or 0
|
||||
local signal = params.first_signal
|
||||
local old_network = refueler.network_name
|
||||
local old_network_flag = refueler.network_flag
|
||||
local old_network_mask = refueler.network_mask
|
||||
|
||||
refueler.network_name = signal and signal.name or nil
|
||||
refueler.allows_all_trains = bit_extract(bits, SETTING_DISABLE_ALLOW_LIST) > 0
|
||||
@@ -473,10 +473,10 @@ function set_refueler_from_comb(map_data, mod_settings, id, refueler)
|
||||
local is_each = refueler.network_name == NETWORK_EACH
|
||||
if is_each then
|
||||
map_data.each_refuelers[id] = true
|
||||
refueler.network_flag = {}
|
||||
refueler.network_mask = {}
|
||||
else
|
||||
map_data.each_refuelers[id] = nil
|
||||
refueler.network_flag = mod_settings.network_flag
|
||||
refueler.network_mask = mod_settings.network_mask
|
||||
end
|
||||
|
||||
local signals = refueler.entity_comb.get_merged_signals(DEFINES_COMBINATOR_INPUT)
|
||||
@@ -491,12 +491,12 @@ function set_refueler_from_comb(map_data, mod_settings, id, refueler)
|
||||
refueler.priority = item_count
|
||||
elseif is_each then
|
||||
if item_name ~= REQUEST_THRESHOLD and item_name ~= LOCKED_SLOTS then
|
||||
refueler.network_flag[item_name] = item_count
|
||||
refueler.network_mask[item_name] = item_count
|
||||
end
|
||||
end
|
||||
end
|
||||
if item_name == refueler.network_name then
|
||||
refueler.network_flag = item_count
|
||||
refueler.network_mask = item_count
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -504,7 +504,7 @@ function set_refueler_from_comb(map_data, mod_settings, id, refueler)
|
||||
|
||||
local f, a
|
||||
if old_network == NETWORK_EACH then
|
||||
f, a = pairs(old_network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(old_network_mask--[[@as {[string]: int}]])
|
||||
elseif old_network ~= refueler.network_name then
|
||||
f, a = once, old_network
|
||||
else
|
||||
@@ -521,7 +521,7 @@ function set_refueler_from_comb(map_data, mod_settings, id, refueler)
|
||||
end
|
||||
|
||||
if refueler.network_name == NETWORK_EACH then
|
||||
f, a = pairs(refueler.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(refueler.network_mask--[[@as {[string]: int}]])
|
||||
elseif old_network ~= refueler.network_name then
|
||||
f, a = once, refueler.network_name
|
||||
else
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
---@field public r_threshold int >= 0 --transient
|
||||
---@field public locked_slots int >= 0 --transient
|
||||
---@field public network_name string?
|
||||
---@field public network_flag int|{[string]: int} --transient
|
||||
---@field public network_mask int|{[string]: int} --transient
|
||||
---@field public wagon_combs {[int]: LuaEntity}?--NOTE: allowed to be invalid entities or combinators with the wrong operation, these must be checked and lazy deleted when found
|
||||
---@field public deliveries {[string]: int}
|
||||
---@field public accepted_layouts {[uint]: true?}
|
||||
@@ -68,7 +68,7 @@
|
||||
---@field public allows_all_trains true?
|
||||
---@field public priority int
|
||||
---@field public network_name string?
|
||||
---@field public network_flag int|{[string]: int}
|
||||
---@field public network_mask int|{[string]: int}
|
||||
|
||||
---@class Train
|
||||
---@field public entity LuaTrain --should only be invalid if se_is_being_teleported is true
|
||||
@@ -86,7 +86,7 @@
|
||||
---@field public use_any_depot true?
|
||||
---@field public disable_bypass true?
|
||||
---@field public network_name string? --can only be nil when the train is parked at a depot
|
||||
---@field public network_flag int|{[string]: int} --transient
|
||||
---@field public network_mask int|{[string]: int} --transient
|
||||
---@field public priority int
|
||||
---@field public refueler_id uint?
|
||||
---@field public se_is_being_teleported true? --se only
|
||||
@@ -114,7 +114,7 @@
|
||||
---@field public r_threshold int
|
||||
---@field public priority int
|
||||
---@field public locked_slots int
|
||||
---@field public network_flag int
|
||||
---@field public network_mask int
|
||||
---@field public warmup_time double
|
||||
---@field public stuck_train_time double
|
||||
---@field public fuel_threshold double
|
||||
@@ -125,7 +125,7 @@
|
||||
---@field public react_to_train_at_incorrect_station boolean --interface setting
|
||||
---@field public react_to_train_early_to_depot boolean --interface setting
|
||||
---@field public enable_manager boolean
|
||||
---@field public manager_update_rate int
|
||||
---@field public manager_ups double
|
||||
|
||||
--if this is uncommented it means there are migrations to write
|
||||
|
||||
|
||||
@@ -61,12 +61,9 @@ function inventory_tab.build(map_data, player_data)
|
||||
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
|
||||
if entity.surface.index ~= search_surface_idx then
|
||||
goto continue
|
||||
end
|
||||
::has_match::
|
||||
end
|
||||
if search_network_name then
|
||||
if search_network_name == (NETWORK_EACH or NETWORK_ANYTHING) then
|
||||
@@ -76,21 +73,21 @@ function inventory_tab.build(map_data, player_data)
|
||||
goto continue
|
||||
end
|
||||
::has_match::
|
||||
local train_flag = get_network_flag(station, station.network_name)
|
||||
local train_flag = get_network_mask(station, station.network_name)
|
||||
if not bit32.btest(search_network_mask, train_flag) then
|
||||
goto continue
|
||||
end
|
||||
elseif search_network_mask ~= -1 then
|
||||
if station.network_name == NETWORK_EACH then
|
||||
local masks = station.network_flag--[[@as {}]]
|
||||
for _, network_flag in pairs(masks) do
|
||||
if bit32.btest(search_network_mask, network_flag) then
|
||||
local masks = station.network_mask--[[@as {}]]
|
||||
for _, network_mask in pairs(masks) do
|
||||
if bit32.btest(search_network_mask, network_mask) then
|
||||
goto has_match
|
||||
end
|
||||
end
|
||||
goto continue
|
||||
::has_match::
|
||||
elseif not bit32.btest(search_network_mask, station.network_flag) then
|
||||
elseif not bit32.btest(search_network_mask, station.network_mask) then
|
||||
goto continue
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,7 +9,7 @@ local manager = require("scripts.gui.manager")
|
||||
|
||||
--- @class PlayerData
|
||||
--- @field is_manager_open boolean
|
||||
--- @field refs {[string]: LuaGuiElement}?
|
||||
--- @field refs {[string]: LuaGuiElement}
|
||||
--- @field search_query string?
|
||||
--- @field search_network_name string?
|
||||
--- @field search_network_mask int
|
||||
@@ -63,6 +63,7 @@ function manager_gui.on_player_created(e)
|
||||
trains_orderings_invert = {},
|
||||
pinning = false,
|
||||
refs = manager.create(player),
|
||||
selected_tab = "stations_tab",
|
||||
}
|
||||
global.manager.players[e.player_index] = player_data
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ function manager.create(player)
|
||||
name = "manager_text_search_field",
|
||||
type = "textfield",
|
||||
clear_and_focus_on_right_click = true,
|
||||
handler = manager.handle.manager_update_text_search, --on_gui_text_changed
|
||||
handler = { [defines.events.on_gui_text_changed] = manager.handle.manager_update_text_search },
|
||||
},
|
||||
{ type = "label", style = "subheader_caption_label", caption = { "cybersyn-gui.search-item-label" } },
|
||||
{ type= "choose-elem-button", name="manager_item_filter", style="slot_button_in_shallow_frame", elem_type="signal", handler=manager.handle.manager_update_item_search, },
|
||||
@@ -83,13 +83,13 @@ function manager.create(player)
|
||||
allow_negative = true,
|
||||
clear_and_focus_on_right_click = true,
|
||||
text = "-1",
|
||||
handler = manager.handle.manager_update_network_mask, --on_gui_text_changed
|
||||
handler = { [defines.events.on_gui_text_changed] = manager.handle.manager_update_network_mask },
|
||||
},
|
||||
{ type = "label", style = "caption_label", caption = { "cybersyn-gui.surface-label" } },
|
||||
{
|
||||
name = "manager_surface_dropdown",
|
||||
type = "drop-down",
|
||||
handler = manager.handle.manager_update_surface, --on_gui_selection_state_changed
|
||||
handler = { [defines.events.on_gui_selection_state_changed] = manager.handle.manager_update_surface },
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -116,13 +116,13 @@ function manager.create(player)
|
||||
return refs
|
||||
end
|
||||
|
||||
--- @param player_data PlayerData
|
||||
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
|
||||
@@ -130,26 +130,23 @@ function manager.build(player_data)
|
||||
end
|
||||
surface_dropdown.clear_items()
|
||||
surface_dropdown.add_item("all", 1)
|
||||
i = 1
|
||||
local i = 1
|
||||
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
|
||||
refs.manager_surface_dropdown.selected_index = i--[[@as uint]]
|
||||
end
|
||||
end
|
||||
-- Validate that the selected index still exist
|
||||
if selected_surface_id then
|
||||
local selected_surface = game.get_surface(selected_surface_id)
|
||||
if player_data.search_surface_idx then
|
||||
local selected_surface = game.get_surface(player_data.search_surface_idx)
|
||||
-- If the surface was invalidated since last update, reset to all
|
||||
if not selected_surface then
|
||||
player_data.search_surface_idx = -1
|
||||
player_data.search_surface_idx = nil
|
||||
end
|
||||
else
|
||||
player_data.search_surface_idx = -1
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--- @param map_data MapData
|
||||
@@ -271,7 +268,8 @@ end
|
||||
--- @param e GuiEventData
|
||||
function manager.handle.manager_update_item_search(player, player_data, refs, e)
|
||||
local element = e.element
|
||||
local signal = element.elem_value
|
||||
if not element then return end
|
||||
local signal = e.element.elem_value
|
||||
if signal then
|
||||
player_data.search_item = signal.name
|
||||
else
|
||||
@@ -283,8 +281,10 @@ end
|
||||
--- @param player LuaPlayer
|
||||
--- @param player_data PlayerData
|
||||
--- @param refs table<string, LuaGuiElement>
|
||||
--- @param e GuiEventData
|
||||
function manager.handle.manager_update_network_name(player, player_data, refs, e)
|
||||
local element = e.element
|
||||
if not element then return end
|
||||
local signal = element.elem_value
|
||||
if signal then
|
||||
player_data.search_network_name = signal.name
|
||||
@@ -295,24 +295,29 @@ end
|
||||
--- @param player LuaPlayer
|
||||
--- @param player_data PlayerData
|
||||
--- @param refs table<string, LuaGuiElement>
|
||||
--- @param e GuiEventData
|
||||
function manager.handle.manager_update_network_mask(player, player_data, refs, e)
|
||||
player_data.search_network_mask = tonumber(e.text) or -1
|
||||
e.text = tostring(player_data.search_network_mask)
|
||||
end
|
||||
--- @param player LuaPlayer
|
||||
--- @param player_data PlayerData
|
||||
--- @param refs table<string, LuaGuiElement>
|
||||
--- @param e GuiEventData
|
||||
function manager.handle.manager_update_surface(player, player_data, refs, e)
|
||||
--- @type LuaGuiElement
|
||||
local element = e.element
|
||||
if not element then return end
|
||||
local i = element.selected_index
|
||||
local refs = player_data.refs
|
||||
local surface_id = -1
|
||||
---@type uint?
|
||||
local surface_id = nil
|
||||
--all surfaces should always be the first entry with an index of 1
|
||||
if i > 1 then
|
||||
local surface_name = refs.manager_surface_dropdown.get_item(i)
|
||||
local surface = game.get_surface(surface_name)
|
||||
if surface then
|
||||
surface_id = surface.index
|
||||
end
|
||||
end
|
||||
|
||||
player_data.search_surface_idx = surface_id
|
||||
end
|
||||
|
||||
@@ -56,7 +56,6 @@ end
|
||||
|
||||
--- @param map_data MapData
|
||||
--- @param player_data PlayerData
|
||||
--- @return GuiElemDef
|
||||
function stations_tab.build(map_data, player_data, query_limit)
|
||||
|
||||
local widths = constants.gui["en"]
|
||||
@@ -102,21 +101,21 @@ function stations_tab.build(map_data, player_data, query_limit)
|
||||
if search_network_name ~= station.network_name then
|
||||
goto continue
|
||||
end
|
||||
local train_flag = get_network_flag(station, station.network_name)
|
||||
local train_flag = get_network_mask(station, station.network_name)
|
||||
if not bit32.btest(search_network_mask, train_flag) then
|
||||
goto continue
|
||||
end
|
||||
elseif search_network_mask ~= -1 then
|
||||
if station.network_name == NETWORK_EACH then
|
||||
local masks = station.network_flag--[[@as {}]]
|
||||
for _, network_flag in pairs(masks) do
|
||||
if bit32.btest(search_network_mask, network_flag) then
|
||||
local masks = station.network_mask--[[@as {}]]
|
||||
for _, network_mask in pairs(masks) do
|
||||
if bit32.btest(search_network_mask, network_mask) then
|
||||
goto has_match
|
||||
end
|
||||
end
|
||||
goto continue
|
||||
::has_match::
|
||||
elseif not bit32.btest(search_network_mask, station.network_flag) then
|
||||
elseif not bit32.btest(search_network_mask, station.network_mask) then
|
||||
goto continue
|
||||
end
|
||||
end
|
||||
@@ -224,8 +223,9 @@ function stations_tab.build(map_data, player_data, query_limit)
|
||||
local station = stations[station_id]
|
||||
local network_sprite = "utility/close_black"
|
||||
local network_name = station.network_name
|
||||
local network_flag = get_network_flag(station, network_name)
|
||||
if network_name ~= nil then
|
||||
local network_mask = -1;
|
||||
if network_name then
|
||||
network_mask = get_network_mask(station, network_name)
|
||||
network_sprite, _, _ = util.generate_item_references(network_name)
|
||||
end
|
||||
local color = i % 2 == 0 and "dark" or "light"
|
||||
@@ -242,7 +242,7 @@ function stations_tab.build(map_data, player_data, query_limit)
|
||||
},
|
||||
--templates.status_indicator(widths.stations.status, true), --repurposing status column for network name
|
||||
{ type = "sprite-button", style = "ltnm_small_slot_button_default", enabled = false, sprite = network_sprite, },
|
||||
{ type = "label", style_mods = { width = widths.stations.network_id, horizontal_align = "center" }, caption = network_flag },
|
||||
{ type = "label", style_mods = { width = widths.stations.network_id, horizontal_align = "center" }, caption = network_mask },
|
||||
templates.small_slot_table(widths.stations, color, "provided_requested"),
|
||||
templates.small_slot_table(widths.stations, color, "shipments"),
|
||||
templates.small_slot_table(widths.stations, color, "control_signals"),
|
||||
|
||||
@@ -47,7 +47,6 @@ end
|
||||
|
||||
--- @param map_data MapData
|
||||
--- @param player_data PlayerData
|
||||
--- @return GuiElemDef
|
||||
function trains_tab.build(map_data, player_data, query_limit)
|
||||
local widths = constants.gui["en"]
|
||||
local refs = player_data.refs
|
||||
@@ -73,29 +72,26 @@ function trains_tab.build(map_data, player_data, query_limit)
|
||||
if search_network_name ~= train.network_name then
|
||||
goto continue
|
||||
end
|
||||
local train_flag = get_network_flag(train, search_network_name)
|
||||
local train_flag = get_network_mask(train, search_network_name)
|
||||
if not bit32.btest(search_network_mask, train_flag) then
|
||||
goto continue
|
||||
end
|
||||
elseif search_network_mask ~= -1 then
|
||||
if train.network_name == NETWORK_EACH then
|
||||
local masks = train.network_flag--[[@as {}]]
|
||||
for _, network_flag in pairs(masks) do
|
||||
if bit32.btest(search_network_mask, network_flag) then
|
||||
local masks = train.network_mask--[[@as {}]]
|
||||
for _, network_mask in pairs(masks) do
|
||||
if bit32.btest(search_network_mask, network_mask) then
|
||||
goto has_match
|
||||
end
|
||||
end
|
||||
goto continue
|
||||
::has_match::
|
||||
elseif not bit32.btest(search_network_mask, train.network_flag) then
|
||||
elseif not bit32.btest(search_network_mask, train.network_mask) then
|
||||
goto continue
|
||||
end
|
||||
end
|
||||
|
||||
if search_surface_idx then
|
||||
if search_surface_idx == -1 then
|
||||
goto has_match
|
||||
end
|
||||
local entity = get_any_train_entity(train.entity)
|
||||
if not entity then
|
||||
goto continue
|
||||
@@ -103,7 +99,6 @@ function trains_tab.build(map_data, player_data, query_limit)
|
||||
if entity.surface.index ~= search_surface_idx then
|
||||
goto continue
|
||||
end
|
||||
::has_match::
|
||||
end
|
||||
|
||||
if search_item then
|
||||
@@ -203,14 +198,17 @@ function trains_tab.build(map_data, player_data, query_limit)
|
||||
else
|
||||
locomotive = train_entity.locomotives["back_movers"][1]
|
||||
end
|
||||
local manifest = {}
|
||||
if train.manifest ~= nil then
|
||||
manifest = train.manifest
|
||||
end
|
||||
local manifest = train.manifest
|
||||
local network_sprite = "utility/close_black"
|
||||
local network_name = train.network_name
|
||||
local network_id = train.network_flag
|
||||
---@type int?
|
||||
local network_id = nil
|
||||
if network_name then
|
||||
if network_name == NETWORK_EACH then
|
||||
network_id = train.network_mask[search_network_name]--[[@as int?]]
|
||||
else
|
||||
network_id = train.network_mask--[[@as int]]
|
||||
end
|
||||
network_sprite, _, _ = util.generate_item_references(network_name)
|
||||
end
|
||||
local color = idx % 2 == 0 and "dark" or "light"
|
||||
@@ -290,7 +288,7 @@ function trains_tab.handle.open_train_gui(player, player_data, refs, e)
|
||||
local train_entity = train.entity
|
||||
|
||||
if not train_entity or not train_entity.valid then
|
||||
util.error_flying_text(gui.player, { "message.ltnm-error-train-is-invalid" })
|
||||
util.error_flying_text(player, { "message.ltnm-error-train-is-invalid" })
|
||||
return
|
||||
end
|
||||
train_util.open_gui(player.index, train_entity)
|
||||
|
||||
@@ -58,7 +58,7 @@ end
|
||||
|
||||
|
||||
--- Updates a slot table based on the passed criteria.
|
||||
--- @param manifest Manifest
|
||||
--- @param manifest Manifest?
|
||||
--- @param color string
|
||||
--- @return GuiElemDef[]
|
||||
function util.slot_table_build_from_manifest(manifest, color)
|
||||
|
||||
@@ -65,7 +65,7 @@ local function on_refueler_built(map_data, stop, comb)
|
||||
--allows_all_trains = set_refueler_from_comb,
|
||||
--priority = set_refueler_from_comb,
|
||||
--network_name = set_refueler_from_comb,
|
||||
--network_flag = set_refueler_from_comb,
|
||||
--network_mask = set_refueler_from_comb,
|
||||
}
|
||||
local id = stop.unit_number--[[@as uint]]
|
||||
map_data.refuelers[id] = refueler
|
||||
@@ -94,7 +94,7 @@ function on_refueler_broken(map_data, refueler_id, refueler)
|
||||
end
|
||||
local f, a
|
||||
if refueler.network_name == NETWORK_EACH then
|
||||
f, a = pairs(refueler.network_flag--[[@as {[string]: int}]])
|
||||
f, a = pairs(refueler.network_mask--[[@as {[string]: int}]])
|
||||
else
|
||||
f, a = once, refueler.network_name
|
||||
end
|
||||
@@ -133,7 +133,7 @@ local function on_station_built(map_data, stop, comb1, comb2)
|
||||
r_threshold = 0,
|
||||
locked_slots = 0,
|
||||
--network_name = set_station_from_comb,
|
||||
network_flag = 0,
|
||||
network_mask = 0,
|
||||
wagon_combs = nil,
|
||||
deliveries = {},
|
||||
accepted_layouts = {},
|
||||
@@ -752,7 +752,7 @@ local function setup_se_compat()
|
||||
if train.is_available then
|
||||
local f, a
|
||||
if train.network_name == NETWORK_EACH then
|
||||
f, a = next, train.network_flag
|
||||
f, a = next, train.network_mask
|
||||
else
|
||||
f, a = once, train.network_name
|
||||
end
|
||||
@@ -836,26 +836,34 @@ local function grab_all_settings()
|
||||
mod_settings.r_threshold = settings.global["cybersyn-request-threshold"].value--[[@as int]]
|
||||
mod_settings.priority = settings.global["cybersyn-priority"].value--[[@as int]]
|
||||
mod_settings.locked_slots = settings.global["cybersyn-locked-slots"].value--[[@as int]]
|
||||
mod_settings.network_flag = settings.global["cybersyn-network-flag"].value--[[@as int]]
|
||||
mod_settings.network_mask = settings.global["cybersyn-network-flag"].value--[[@as int]]
|
||||
mod_settings.fuel_threshold = settings.global["cybersyn-fuel-threshold"].value--[[@as double]]
|
||||
mod_settings.warmup_time = settings.global["cybersyn-warmup-time"].value--[[@as double]]
|
||||
mod_settings.stuck_train_time = settings.global["cybersyn-stuck-train-time"].value--[[@as double]]
|
||||
mod_settings.allow_cargo_in_depot = settings.global["cybersyn-allow-cargo-in-depot"].value--[[@as boolean]]
|
||||
mod_settings.invert_sign = settings.global["cybersyn-invert-sign"].value--[[@as boolean]]
|
||||
mod_settings.manager_ups = settings.global["cybersyn-manager-updates-per-second"].value--[[@as int]]
|
||||
mod_settings.manager_enabled = settings.startup["cybersyn-manager-enabled"].value--[[@as boolean]]
|
||||
mod_settings.manager_update_rate = settings.startup["cybersyn-manager-update-rate"].value--[[@as int]]
|
||||
end
|
||||
local function register_tick()
|
||||
script.on_nth_tick(nil)
|
||||
if mod_settings.tps > DELTA then
|
||||
local nth_tick_main = ceil(60/mod_settings.tps)--[[@as uint]]
|
||||
script.on_nth_tick(nth_tick_main, function()
|
||||
tick(global, mod_settings)
|
||||
end)
|
||||
end
|
||||
if mod_settings.manager_enabled and mod_settings.manager_ups > DELTA then
|
||||
local nth_tick_manager = ceil(60/mod_settings.manager_ups)--[[@as uint]]
|
||||
script.on_nth_tick(nth_tick_manager, function()
|
||||
manager.tick(global)
|
||||
end)
|
||||
end
|
||||
end
|
||||
local function on_settings_changed(event)
|
||||
grab_all_settings()
|
||||
if event.setting == "cybersyn-ticks-per-second" then
|
||||
if mod_settings.tps > DELTA then
|
||||
local nth_tick = ceil(60/mod_settings.tps)--[[@as uint]];
|
||||
script.on_nth_tick(nth_tick, function()
|
||||
tick(global, mod_settings)
|
||||
end)
|
||||
else
|
||||
script.on_nth_tick(nil)
|
||||
end
|
||||
if event.setting == "cybersyn-ticks-per-second" or event.setting == "cybersyn-manager-updates-per-second" then
|
||||
register_tick()
|
||||
end
|
||||
manager.on_runtime_mod_setting_changed(event)
|
||||
interface_raise_on_mod_settings_changed(event)
|
||||
@@ -912,15 +920,6 @@ local function main()
|
||||
|
||||
register_gui_actions()
|
||||
|
||||
if mod_settings.tps > DELTA then
|
||||
local nth_tick = ceil(60/mod_settings.tps)--[[@as uint]];
|
||||
script.on_nth_tick(nth_tick, function()
|
||||
tick(global, mod_settings)
|
||||
end)
|
||||
else
|
||||
script.on_nth_tick(nil)
|
||||
end
|
||||
|
||||
|
||||
local MANAGER_ENABLED = mod_settings.manager_enabled
|
||||
|
||||
@@ -955,12 +954,9 @@ local function main()
|
||||
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("cybersyn-toggle-gui", manager.on_lua_shortcut)
|
||||
-- TODO: rework this to work as a per-player runtime setting
|
||||
script.on_nth_tick(mod_settings.manager_update_rate, function()
|
||||
manager.tick(global)
|
||||
end)
|
||||
end
|
||||
|
||||
register_tick()
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -295,16 +295,35 @@ local migrations_table = {
|
||||
end
|
||||
end,
|
||||
["1.2.14"] = function()
|
||||
---@type MapData
|
||||
local map_data = global
|
||||
|
||||
manager_gui.on_init()
|
||||
for i, v in pairs(game.players) do
|
||||
manager_gui.on_player_created({player_index = i})
|
||||
end
|
||||
|
||||
for _, e in pairs(map_data.refuelers) do
|
||||
e.network_mask = e.network_flag
|
||||
e.network_flag = nil
|
||||
end
|
||||
for _, e in pairs(map_data.stations) do
|
||||
e.network_mask = e.network_flag
|
||||
e.network_flag = nil
|
||||
end
|
||||
for _, e in pairs(map_data.trains) do
|
||||
e.network_mask = e.network_flag
|
||||
e.network_flag = nil
|
||||
end
|
||||
end,
|
||||
}
|
||||
--STATUS_R_TO_D = 5
|
||||
|
||||
---@param data ConfigurationChangedData
|
||||
function on_config_changed(data)
|
||||
for i, v in pairs(game.players) do
|
||||
manager_gui.reset_player(i, v)
|
||||
end
|
||||
global.tick_state = STATE_INIT
|
||||
global.tick_data = {}
|
||||
flib_migration.on_config_changed(data, migrations_table)
|
||||
|
||||
@@ -80,7 +80,7 @@ function add_available_train(map_data, train_id, train)
|
||||
if train.network_name then
|
||||
local f, a
|
||||
if train.network_name == NETWORK_EACH then
|
||||
f, a = next, train.network_flag
|
||||
f, a = next, train.network_mask
|
||||
else
|
||||
f, a = once, train.network_name
|
||||
end
|
||||
@@ -121,7 +121,7 @@ function remove_available_train(map_data, train_id, train)
|
||||
train.is_available = nil
|
||||
local f, a
|
||||
if train.network_name == NETWORK_EACH then
|
||||
f, a = next, train.network_flag
|
||||
f, a = next, train.network_mask
|
||||
else
|
||||
f, a = once, train.network_name
|
||||
end
|
||||
@@ -195,7 +195,7 @@ local function on_train_arrives_depot(map_data, depot_id, depot, train_entity)
|
||||
--use_any_depot = add_available_train_to_depot,
|
||||
--disable_bypass = add_available_train_to_depot,
|
||||
--network_name = add_available_train_to_depot,
|
||||
--network_flag = add_available_train_to_depot,
|
||||
--network_mask = add_available_train_to_depot,
|
||||
--priority = add_available_train_to_depot,
|
||||
}--[[@as Train]]
|
||||
set_train_layout(map_data, train)
|
||||
@@ -311,7 +311,7 @@ local function on_train_leaves_stop(map_data, mod_settings, train_id, train)
|
||||
else
|
||||
local f, a
|
||||
if train.network_name == NETWORK_EACH then
|
||||
f, a = next, train.network_flag
|
||||
f, a = next, train.network_mask
|
||||
else
|
||||
f, a = once, train.network_name
|
||||
end
|
||||
@@ -328,9 +328,9 @@ local function on_train_leaves_stop(map_data, mod_settings, train_id, train)
|
||||
else
|
||||
set_refueler_from_comb(map_data, mod_settings, id, refueler)
|
||||
|
||||
local refueler_network_flag = get_network_flag(refueler, network_name)
|
||||
local train_network_flag = get_network_flag(train, network_name)
|
||||
if btest(train_network_flag, refueler_network_flag) and (refueler.allows_all_trains or refueler.accepted_layouts[train.layout_id]) and refueler.trains_total < refueler.entity_stop.trains_limit then
|
||||
local refueler_network_mask = get_network_mask(refueler, network_name)
|
||||
local train_network_mask = get_network_mask(train, network_name)
|
||||
if btest(train_network_mask, refueler_network_mask) and (refueler.allows_all_trains or refueler.accepted_layouts[train.layout_id]) and refueler.trains_total < refueler.entity_stop.trains_limit then
|
||||
if refueler.priority >= best_prior then
|
||||
local t = get_any_train_entity(train.entity)
|
||||
local dist = t and get_dist(t, refueler.entity_stop) or INF
|
||||
|
||||
@@ -104,12 +104,12 @@ data:extend({
|
||||
},
|
||||
{
|
||||
type = "int-setting",
|
||||
name = "cybersyn-manager-update-rate",
|
||||
name = "cybersyn-manager-updates-per-second",
|
||||
order = "ad",
|
||||
setting_type = "startup",
|
||||
default_value = 60,
|
||||
minimum_value = 1,
|
||||
maximum_value = 2147483647,
|
||||
setting_type = "runtime-global",
|
||||
default_value = 30,
|
||||
minimum_value = 0,
|
||||
maximum_value = 60,
|
||||
},
|
||||
{
|
||||
type = "bool-setting",
|
||||
|
||||
Reference in New Issue
Block a user