mirror of
https://github.com/Xevion/project-cybersyn.git
synced 2025-12-08 16:08:07 -06:00
fixed multiple issues
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 1.1.8
|
||||
Date: 2022-12-22
|
||||
Version: 1.2.0
|
||||
Date: 2022-12-23
|
||||
Changes:
|
||||
- Forced provide stations to wait until they can service the highest priority request station
|
||||
- Provide stations now override request thresholds with the per-item thresholds set by their station info combinator
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cybersyn",
|
||||
"version": "1.1.7",
|
||||
"version": "1.2.0",
|
||||
"title": "Project Cybersyn",
|
||||
"author": "Mami",
|
||||
"factorio_version": "1.1",
|
||||
|
||||
@@ -45,12 +45,12 @@ cybersyn-locked-slots=Locked slots per cargo wagon
|
||||
[cybersyn-messages]
|
||||
nonempty-train=A train is being held in the depot because it still has cargo
|
||||
unexpected-train=A train has unexpectedly returned to the depot before completing its delivery
|
||||
stuck-train=A train from depot __1__ is stuck
|
||||
cannot-path-between-surfaces=A train from depot __1__ is attempting to make a delivery between two unconnected surfaces, perhaps put them on separate networks
|
||||
depot-broken=A train from depot __1__ is lost because its depot was broken.
|
||||
refueler-broken=A train from depot __1__ is lost because its refueler was broken.
|
||||
station-broken=A train from depot __1__ is lost because one of its delivery stations was broken.
|
||||
train-at-incorrect=A train from depot __1__ is lost; it parked at a station it was not scheduled to delivered to.
|
||||
stuck-train=A train is stuck
|
||||
cannot-path-between-surfaces=A train is attempting to make a delivery between two unconnected surfaces, perhaps put them on separate networks
|
||||
depot-broken=A train is lost because its depot was broken
|
||||
refueler-broken=A train is lost because its fuel loader was broken
|
||||
station-broken=A train is lost because one of its delivery stations was broken
|
||||
train-at-incorrect=A train parked at a station it was not scheduled to delivered to
|
||||
missing-train=Could not find any train on the correct network to make a delivery from __2__ to __1__
|
||||
no-train-has-capacity=Could not find a train with enough cargo capacity to make a delivery from __2__ to __1__
|
||||
no-train-matches-r-layout=Could not find a train on the allow-list of __1__ to make a delivery
|
||||
|
||||
@@ -300,7 +300,7 @@ local function tick_dispatch(map_data, mod_settings)
|
||||
---@type string
|
||||
local network_name
|
||||
if r_station.network_name == NETWORK_EACH then
|
||||
_, _, network_name = string.find(item_network_name, "(^.*):")
|
||||
_, _, network_name = string.find(item_network_name, "^(.*):")
|
||||
else
|
||||
network_name = r_station.network_name
|
||||
end
|
||||
@@ -337,8 +337,8 @@ local function tick_dispatch(map_data, mod_settings)
|
||||
goto p_continue
|
||||
end
|
||||
|
||||
p_flag = p_station.network_name == NETWORK_EACH and (p_station.network_flag[item_name] or 0) or p_station.network_flag
|
||||
r_flag = r_station.network_name == NETWORK_EACH and (r_station.network_flag[item_name] or 0) or r_station.network_flag
|
||||
p_flag = p_station.network_name == NETWORK_EACH and (p_station.network_flag[network_name] or 0) or p_station.network_flag
|
||||
r_flag = r_station.network_name == NETWORK_EACH and (r_station.network_flag[network_name] or 0) or r_station.network_flag
|
||||
netand = band(p_flag, r_flag)
|
||||
if netand == 0 then
|
||||
goto p_continue
|
||||
@@ -680,7 +680,7 @@ function tick(map_data, mod_settings)
|
||||
map_data.total_ticks = map_data.total_ticks + 1
|
||||
|
||||
if map_data.active_alerts then
|
||||
if map_data.total_ticks%(9*mod_settings.tps) < 1 then
|
||||
if map_data.total_ticks%(10*mod_settings.tps) < 1 then
|
||||
process_active_alerts(map_data)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -566,7 +566,6 @@ local function send_alert_for_train(train, icon, message)
|
||||
icon,
|
||||
{message},
|
||||
true)
|
||||
player.play_sound({path = ALERT_SOUND})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -623,7 +622,7 @@ local send_stuck_train_alert_icon = {name = LOST_TRAIN_NAME, type = "fluid"}
|
||||
function send_alert_stuck_train(map_data, train)
|
||||
send_alert_for_train(train, send_stuck_train_alert_icon, "cybersyn-messages.stuck-train")
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 1
|
||||
map_data.active_alerts[train.id] = {train, 1}
|
||||
end
|
||||
|
||||
local send_nonempty_train_in_depot_alert_icon = {name = NONEMPTY_TRAIN_NAME, type = "fluid"}
|
||||
@@ -631,8 +630,9 @@ local send_nonempty_train_in_depot_alert_icon = {name = NONEMPTY_TRAIN_NAME, typ
|
||||
---@param train LuaTrain
|
||||
function send_alert_nonempty_train_in_depot(map_data, train)
|
||||
send_alert_for_train(train, send_nonempty_train_in_depot_alert_icon, "cybersyn-messages.nonempty-train")
|
||||
send_alert_sounds(train)
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 2
|
||||
map_data.active_alerts[train.id] = {train, 2}
|
||||
end
|
||||
|
||||
local send_lost_train_alert_icon = {name = LOST_TRAIN_NAME, type = "fluid"}
|
||||
@@ -640,36 +640,41 @@ local send_lost_train_alert_icon = {name = LOST_TRAIN_NAME, type = "fluid"}
|
||||
---@param train LuaTrain
|
||||
function send_alert_depot_of_train_broken(map_data, train)
|
||||
send_alert_for_train(train, send_lost_train_alert_icon, "cybersyn-messages.depot-broken")
|
||||
send_alert_sounds(train)
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 3
|
||||
map_data.active_alerts[train.id] = {train, 3}
|
||||
end
|
||||
---@param map_data MapData
|
||||
---@param train LuaTrain
|
||||
function send_alert_station_of_train_broken(map_data, train)
|
||||
send_alert_for_train(train, send_lost_train_alert_icon, "cybersyn-messages.station-broken")
|
||||
send_alert_sounds(train)
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 4
|
||||
map_data.active_alerts[train.id] = {train, 4}
|
||||
end
|
||||
---@param map_data MapData
|
||||
---@param train LuaTrain
|
||||
function send_alert_refueler_of_train_broken(map_data, train)
|
||||
send_alert_for_train(train, send_lost_train_alert_icon, "cybersyn-messages.refueler-broken")
|
||||
send_alert_sounds(train)
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 5
|
||||
map_data.active_alerts[train.id] = {train, 5}
|
||||
end
|
||||
---@param map_data MapData
|
||||
---@param train LuaTrain
|
||||
function send_alert_train_at_incorrect_station(map_data, train)
|
||||
send_alert_for_train(train, send_lost_train_alert_icon, "cybersyn-messages.train-at-incorrect")
|
||||
send_alert_sounds(train)
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 6
|
||||
map_data.active_alerts[train.id] = {train, 6}
|
||||
end
|
||||
---@param map_data MapData
|
||||
---@param train LuaTrain
|
||||
function send_alert_cannot_path_between_surfaces(map_data, train)
|
||||
send_alert_for_train(train, send_lost_train_alert_icon, "cybersyn-messages.cannot-path-between-surfaces")
|
||||
send_alert_sounds(train)
|
||||
map_data.active_alerts = map_data.active_alerts or {}
|
||||
map_data.active_alerts[train] = 7
|
||||
map_data.active_alerts[train.id] = {train, 7}
|
||||
end
|
||||
|
||||
---@param train LuaTrain
|
||||
@@ -680,7 +685,10 @@ end
|
||||
|
||||
---@param map_data MapData
|
||||
function process_active_alerts(map_data)
|
||||
for train, id in pairs(map_data.active_alerts) do
|
||||
for train_id, data in pairs(map_data.active_alerts) do
|
||||
local train = data[1]
|
||||
if train.valid then
|
||||
local id = data[2]
|
||||
if id == 1 then
|
||||
send_alert_for_train(train, send_stuck_train_alert_icon, "cybersyn-messages.stuck-train")
|
||||
elseif id == 2 then
|
||||
@@ -696,5 +704,8 @@ function process_active_alerts(map_data)
|
||||
elseif id == 7 then
|
||||
send_alert_for_train(train, send_lost_train_alert_icon, "cybersyn-messages.cannot-path-between-surfaces")
|
||||
end
|
||||
else
|
||||
map_data.active_alerts[train_id] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
---@field public tick_data {}
|
||||
---@field public economy Economy
|
||||
---@field public each_refuelers {[uint]: true}
|
||||
---@field public active_alerts {[LuaTrain]: int}?
|
||||
---@field public active_alerts {[uint]: {[1]: LuaTrain, [2]: int}}?
|
||||
---@field public se_tele_old_id {[string]: uint}
|
||||
|
||||
---@class Station
|
||||
|
||||
@@ -65,7 +65,7 @@ function gui_opened(comb, player)
|
||||
on_click = {"close", comb.unit_number}
|
||||
}}
|
||||
}},
|
||||
{type="frame", name="frame", style="inside_shallow_frame_with_padding", style_mods={padding=12, bottom_padding=10}, children={
|
||||
{type="frame", name="frame", style="inside_shallow_frame_with_padding", style_mods={padding=12, bottom_padding=9}, children={
|
||||
{type="flow", name="vflow", direction="vertical", style_mods={horizontal_align="left"}, children={
|
||||
--status
|
||||
{type="flow", style="status_flow", direction="horizontal", style_mods={vertical_align="center", horizontally_stretchable=true, bottom_padding=4}, children={
|
||||
@@ -196,11 +196,10 @@ function register_gui_actions()
|
||||
if signal and (signal.name == "signal-everything" or signal.name == "signal-anything" or signal.name == "signal-each") then
|
||||
if param.operation == MODE_PRIMARY_IO or param.operation == MODE_PRIMARY_IO_ACTIVE or param.operation == MODE_PRIMARY_IO_FAILED_REQUEST or param.operation == MODE_REFUELER then
|
||||
signal.name = NETWORK_EACH
|
||||
element.elem_value.name = NETWORK_EACH
|
||||
else
|
||||
signal = nil
|
||||
element.elem_value = nil
|
||||
end
|
||||
element.elem_value = signal
|
||||
end
|
||||
set_comb_network_name(comb, signal)
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ local migrations_table = {
|
||||
end
|
||||
end
|
||||
end,
|
||||
["1.1.8"] = function()
|
||||
["1.2.0"] = function()
|
||||
---@type MapData
|
||||
local map_data = global
|
||||
map_data.tick_state = STATE_INIT
|
||||
|
||||
@@ -332,7 +332,7 @@ local function on_train_leaves_stop(map_data, mod_settings, train_id, train)
|
||||
local refueler = map_data.refuelers[id]
|
||||
set_refueler_from_comb(map_data, mod_settings, id)
|
||||
|
||||
local refueler_network_flag = refueler.network_name == NETWORK_EACH and refueler.network_flag[train.network_name] or refueler.network_flag
|
||||
local refueler_network_flag = refueler.network_name == NETWORK_EACH and (refueler.network_flag[train.network_name] or 0) or refueler.network_flag
|
||||
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 accepted = false
|
||||
local dist = nil
|
||||
@@ -419,15 +419,15 @@ end
|
||||
function on_train_changed(event)
|
||||
local train_e = event.train--[[@as LuaTrain]]
|
||||
if not train_e.valid then return end
|
||||
local train_id = train_e.id
|
||||
|
||||
if global.active_alerts and global.active_alerts[train_e] then
|
||||
global.active_alerts[train_e] = nil
|
||||
if global.active_alerts and global.active_alerts[train_id] then
|
||||
global.active_alerts[train_id] = nil
|
||||
if next(global.active_alerts) == nil then
|
||||
global.active_alerts = nil
|
||||
end
|
||||
end
|
||||
|
||||
local train_id = train_e.id
|
||||
if train_e.state == defines.train_state.wait_station then
|
||||
local stop = train_e.station
|
||||
if stop and stop.valid and stop.name == "train-stop" then
|
||||
|
||||
Reference in New Issue
Block a user