Merge branch 'main' into experimental

This commit is contained in:
mamoniot
2023-02-04 16:58:31 -05:00
4 changed files with 157 additions and 44 deletions

View File

@@ -17,6 +17,7 @@
],
"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"
],
"Lua.diagnostics.globals": [
"__DebugAdapter",

View File

@@ -1,51 +1,51 @@
[mod-setting-name]
cybersyn-enable-planner=Включить централизованное планирование
cybersyn-ticks-per-second=Обновления централизованного планирования в секунду
cybersyn-update-rate=Частота обновления централизованного планирования
cybersyn-enable-planner=Включить центральный планировщик
cybersyn-ticks-per-second=Обновлений центрального планировщика в секунду
cybersyn-update-rate=Частота операций в обновлении центрального планировщика
cybersyn-request-threshold=Пороговое значение запроса по умолчанию
cybersyn-priority=Приоритет по умолчанию
cybersyn-locked-slots=Заблокированные по умолчанию слоты для каждого грузового вагона
cybersyn-locked-slots=Количество заблокированных по умолчанию слотов для каждого грузового вагона
cybersyn-network-flag=Маска сети по умолчанию
cybersyn-fuel-threshold=Топливный порог
cybersyn-depot-bypass-enabled=Включение обхода депо
cybersyn-warmup-time=Время прогрева станции (сек)
cybersyn-stuck-train-time=Время ожидания застрявшего поезда (сек)
cybersyn-allow-cargo-in-depot=Разрешить хранение грузов на депо
cybersyn-invert-sign=Инвертировать вывод комбинатора (устарел)
cybersyn-depot-bypass-enabled=Разрешить пропуск депо
cybersyn-warmup-time=Время "прогрева" станции (сек)
cybersyn-stuck-train-time=Таймаут застревания поезда (сек)
cybersyn-allow-cargo-in-depot=Разрешить поезда с грузом в депо
cybersyn-invert-sign=Инвертировать вывод комбинатора (устаревший параметр)
[mod-setting-description]
cybersyn-enable-planner=Включите или отключите алгоритм централизованного планирования. Если этот параметр отключен, новые поезда отправляться не будут.
cybersyn-enable-planner=Включает или отключает алгоритм централизованного планирования. Если этот параметр отключен, новые поезда отправляться не будут.
cybersyn-ticks-per-second=Сколько раз в секунду центральный планировщик должен обновлять состояние сети и планировать доставки. Это значение будет округлено до делителя 60. Установка этого значения в 0 остановит все отправки.
cybersyn-update-rate=Сколько станций на тик можно опросить одновременно или могут быть запланированы доставки одновременно. Большее число позволяет центральному планировщику быть в курсе текущего состояния сети, но за счёт производительности.
cybersyn-request-threshold=Порог запроса по умолчанию, когда на станцию не подается сигнал порога запроса. Когда станция получает отрицательный сигнал товара, который превышает порог ее запроса, до тех пор, пока существует какая-либо станция с положительным сигналом, превышающим порог запроса, доставка этого товара будет запланирована между двумя станциями.
cybersyn-priority=Приоритет по умолчанию, когда сигнал приоритета не подается на станцию, склад или заправщик. Станции с более высокими приоритетами будут получать доставки раньше станций с более низкими приоритетами.
cybersyn-locked-slots=Количество заблокированных ячеек по умолчанию на грузовой вагон, когда на станцию не подается сигнал "заблокированные ячейки на грузовой вагон". Когда на станции-снабжения заблокированы ячейки для каждого грузового вагона X, любой поезд, пытающийся осуществить доставку с нее, изменит свои заказы, так что в каждом грузовом вагоне останется пустым по крайней мере X ячеек для товаров. Это необходимо для правильной работы станций снабжения нескольких товаров.
cybersyn-update-rate=Сколько станций за одно обновление планировщика могут быть опрошены или запланированы на доставку одновременно. Большее число позволяет центральному планировщику быстрее актуализировать состояния сети, но за счёт снижения производительности.
cybersyn-request-threshold=Порог запроса по умолчанию, когда на станцию не подается сигнал порога запроса. Если станция получает отрицательный сигнал предмета, превышающий ее порог запроса, а также существует какая-либо станция с положительным сигналом этого же предмета, превышающим тот же порог, тогда будет запланирована доставка этого предмета между этими двумя станциями.
cybersyn-priority=Приоритет по умолчанию, когда сигнал приоритета не подается на станцию, депо или заправку. Станции с более высоким приоритетом будут получать доставки раньше станций с более низким приоритетом.
cybersyn-locked-slots=Количество заблокированных ячеек на грузовой вагон по умолчанию, когда на станцию не подается сигнал "заблокированные ячейки на грузовой вагон". Когда станция снабжения настроена на X заблокированных ячеек для каждого грузового вагона. Любой поезд, пытающийся осуществить доставку с нее, изменит свои запросы таким образом, чтобы в каждом грузовом вагоне всегда оставались пустыми по крайней мере X ячеек. Это необходимо для правильной работы станций, снабжающих несколькими разными предметами одновременно.
cybersyn-network-flag=Набор подсетей по умолчанию, которые станция будет обслуживать, когда на станцию не подается сетевой сигнал. Это целое число интерпретируется побитово, чтобы дать 32 возможных подсети на выбор.
cybersyn-fuel-threshold=Какой процент запасов топлива в поезде должен быть заполнен, чтобы пропустить дозаправку. Если это значение равно 1, поезда всегда будут посещать заправочную станцию после завершения доставки.
cybersyn-depot-bypass-enabled=Если этот флажок установлен, то, когда поезд завершает доставку и дозаправку, он может принять новый заказ от сети, прежде чем вернуться в свое депо.
cybersyn-warmup-time=Сколько секунд кибернетический комбинатор будет ждать, прежде чем подключиться к сети Cybersyn. Это льготный период для изменения или исправления кольцевой сети до того, как поезда начнут отправляться на новую станцию созданную из чертежа.
cybersyn-fuel-threshold=Какой процент запасов топлива в поезде должен быть, чтобы пропустить дозаправку. Если это значение равно 1, поезда всегда будут посещать заправочную станцию после завершения доставки.
cybersyn-depot-bypass-enabled=Если этот параметр включен, то, когда поезд завершает доставку и дозаправку, он может сразу начать выполнять новую доставку вместо возврата в свое депо.
cybersyn-warmup-time=Сколько секунд кибернетический комбинатор будет ждать, прежде чем подключиться к сети Cybersyn. Это льготное время, чтобы успеть измененить или исправить логическую сеть до того, как поезда начнут отправляться на новую станцию, созданную из чертежа.
cybersyn-stuck-train-time=По истечении этого количества секунд с момента отправки поезда будет отправлено оповещение, сообщающее вам, что поезд, вероятно, застрял и не завершил свою доставку. Игроку, скорее всего, придется отлаживать свою сеть, чтобы освободить поезд.
cybersyn-allow-cargo-in-depot=Если этот флажок установлен, поездам будет разрешено иметь груз на депо; никаких предупреждений генерироваться не будет, и поезд не будет остановлен. Кроме того, поезда с заказами на посещение станций-отправителей с отметкой "Состояние бездействия" будут ожидать бездействия вместо ожидания порожнего груза. Полезно для создания железнодорожных систем, в которых склады обрабатывают избыточный груз. Только для продвинутых пользователей.
cybersyn-invert-sign=Измените знак вывода кибернетический комбинатор так, чтобы он был таким же, как в LTN или в более ранних версиях Project Cybersyn.
cybersyn-allow-cargo-in-depot=Если этот параметр включен, поездам будет разрешено иметь груз во время стоянки в депо; никаких предупреждений генерироваться не будет, и поезд не будет приостановлен. Кроме того, поезда при посещении станций снабжения с включенной настройкой "Условие бездействия" будут ожидать бездействия вместо ожидания полной разгрузки. Полезно для создания железнодорожных систем, в которых депо обрабатывают избыточный груз. Только для продвинутых пользователей.
cybersyn-invert-sign=Изменяет знак сигналов вывода кибернетического комбинатора так, чтобы он был таким же, как в LTN или в более ранних версиях Project Cybersyn.
[item-name]
cybersyn-combinator=Кибернетический комбинатор
[item-description]
cybersyn-combinator=Поместите рядом с железнодорожной станцией, чтобы добавить её в сеть поездов Cybersyn. Эта станция теперь может запрашивать или предоставить предметы, о которых сообщают ему через логическую сеть.
cybersyn-combinator=Помещается рядом с железнодорожной станцией, чтобы добавить её в сеть поездов Cybersyn. Тогда эта станция сможет запрашивать или предоставлять предметы, о которых комбинатору сообщают через логическую сеть.
[entity-name]
cybersyn-combinator=Кибернетический комбинатор
cybersyn-combinator-output=Выход кибернетического комбинатора
[entity-description]
cybersyn-combinator=Имеет 5 разных режимов. Однако для работы простой сети вам понадобится только режим станции и режим депо.
cybersyn-combinator=Имеет 5 разных режимов. Однако для работы простой сети вам понадобится только режимы станции и депо.
[technology-name]
cybersyn-train-network=Сеть поездов Cybersyn
[technology-description]
cybersyn-train-network=Контроллеры для железнодорожных станций помогут в логистики вашей базы.
cybersyn-train-network=Контроллеры для железнодорожных станций, ответственные за координацию логистики вашей базы.
[virtual-signal-name]
cybersyn-priority=Приоритет станции
@@ -53,18 +53,18 @@ cybersyn-request-threshold=Порог запроса
cybersyn-locked-slots=Заблокированые слоты на грузовой вагон
[cybersyn-messages]
nonempty-train=Поезд останется в депо так как в нём остался груз с последней доставки
nonempty-train=Поезд останется в депо, так как в нём остался груз с последней доставки
unexpected-train=Поезд неожиданно вернулся в депо, прежде чем завершил доставку
stuck-train=Поезд застрял
cannot-path-between-surfaces=Поезд пытается осуществить доставку между двумя несвязанными поверхностями, возможно, необходимо поместить их в отдельные сети
depot-broken=Поезд потерян, потому что его предписаное депо уничтожено
depot-broken=Поезд потерян, потому что депо, к которому он прикреплен, уничтожено
refueler-broken=Поезд потерян, потому что его станция заправки была уничтожена
station-broken=Поезд потерян, потому что одна из его станций доставки была уничтожена
train-at-incorrect=Поезд остановился на станции куда не планировалась доставка
station-broken=Поезд потерян, потому что одна из его станций назначения была уничтожена
train-at-incorrect=Поезд остановился на станции, на которую не планировалась доставка
missing-train=Не удалось найти ни одного поезда в текущей сети, чтобы совершить доставку из __2__ в __1__
no-train-has-capacity=Не удалось найти поезд с достаточной вместимостью для доставки из __2__ в __1__
no-train-matches-r-layout=Не удалось найти поезд в списке разрешенных станции __1__ для осуществления доставки
no-train-matches-p-layout=Не удалось найти поезд в списке разрешенных станции __2__ для доставки в __1__
no-train-matches-r-layout=Не удалось найти поезд в списке разрешенных поездов станции __1__ для осуществления доставки
no-train-matches-p-layout=Не удалось найти поезд в списке разрешенных поездов станции __2__ для доставки в __1__
[cybersyn-gui]
combinator-title=Кибернетический комбинатор
@@ -76,19 +76,19 @@ comb2=Управление станцией
wagon-manifest=Управление вагоном
switch-provide=Только снабжение
switch-request=Только запрос
switch-provide-tooltip=Заблокируйте эту станцию чтобы она осуществляла только снабжение сети поездов своими товарами. По умолчанию станции работают в режими снабжения и запроса.
switch-request-tooltip=Заблокируйте эту станцию чтобы она осуществляла только запрос товаров из сети поездов. По умолчанию станции работают в режими снабжения и запроса.
switch-provide-tooltip=Разрешить этой станции только предоставление в сеть поездов своих предметов. По умолчанию станции работают в режиме снабжения и запроса.
switch-request-tooltip=Разрешить этой станции только запрашивание предметов из сети поездов. По умолчанию станции работают в режиме снабжения и запроса.
network=Сеть
network-tooltip=Сигнал используется для определения того, членом какой сети является данный комбинатор. Поезда будут отправляться со депо на станции снабжения и станции запроса только в том случае, если все они идентифицированы одним и тем же сигналом сети.
allow-list-description=Автоматический список разрешенных
allow-list-tooltip=Если флажок стоит, сеть проверит, если каждый вагон поезда может быть загружен или разгружен на станции, то он добавляется в список разрешенных поездов этой станции. Если флажок снят, список разрешенных поездов не используется, и всем поездам разрешается останавливаться здесь.
is-stack-description=Порог стопки
is-stack-tooltip=При установке флажка все пороговые значения запросов для этой станции интерпретируются как количество стопок товаров, а не общее количество товаров. Пороговые значения для жидкостей остаются неизменными.
enable-inactive-description=Состояние бездействия
enable-inactive-tooltip=Если флажок стоит, на станции снабжения поезду будет выжидать период бездействия, даже если его заказ был выполнен. Это часто бывает полезно для предотвращения застревания предметов в манипуляторах.
use-same-depot-description=Требуется такое же депо
use-same-depot-tooltip=Если флажок стоит, поезда всегда возвращаются в тоже депо что и покинули вне зависимости от названия. Если флажок снят, поезду разрешается вернуться в любое депо с аналогичным названием.
depot-bypass-description=Обход депо
depot-bypass-tooltip=Если флажок стоит, поезда из этого депо не должны быть припаркованы в этом депо для получения новых заказов, у них просто не должно быть текущих активных заказов. Они все равно вернутся в это депо, если у них закончится топливо и не будет доступных станций заправки.
enable-slot-barring-description=Исключение нефильтрованных слотов
enable-slot-barring-tooltip=Если флажок стоит, все ячейки соседнего вагона, которые не отфильтрованы будут заблокированы, чтобы ни один товар не мог загрузиться в него.
network-tooltip=Этот сигнал используется для определения того, членом какой сети является данный комбинатор. Поезда будут отправляться с депо на станции снабжения и станции запроса только в том случае, если все они идентифицированы одним и тем же сигналом сети.
allow-list-description=Авто-список разрешенных поездов
allow-list-tooltip=Если параметр включен, сеть проверит, что каждый вагон поезда может быть загружен или разгружен на станции, и автоматически добавит в список разрешенных поездов этой станции. Если параметр отключен, список разрешенных поездов не используется, и всем поездам разрешается останавливаться здесь.
is-stack-description=Порог в ячейках
is-stack-tooltip=При включении параметра все пороговые значения запросов для этой станции интерпретируются как количество полных ячеек, а не общее количество предметов. Не влияет на интерпретацию порогового значения для жидкостей.
enable-inactive-description=Условие бездействия
enable-inactive-tooltip=Если параметр включен, поезд на станции снабжения будет выжидать период бездействия, даже если его запрос был выполнен. Это часто бывает полезно для предотвращения застревания предметов в манипуляторах.
use-same-depot-description=Прикреплять поезд к депо
use-same-depot-tooltip=Если параметр включен, поезда всегда возвращаются в то же депо, что и покинули, независимо от названия. Если параметр отключен, поезду разрешается вернуться в любое депо с таким же названием.
depot-bypass-description=Пропуск депо
depot-bypass-tooltip=Если параметр включен, поезда из этого депо не должны быть обязательно припаркованы в этом депо для назначения новых доставок, у них просто не должно быть текущих активных доставок. Впоследствии они все равно вернутся в это депо, если у них будет заканчиваться топливо и не будет доступных станций заправки.
enable-slot-barring-description=Исключать нефильтрованные слоты
enable-slot-barring-tooltip=Если параметр включен, все нефильтрованные ячейки управляемого вагона будут заблокированы, чтобы ни один предмет не мог загрузиться в него.

View File

@@ -467,7 +467,7 @@ function reset_stop_layout(map_data, stop, is_station_or_refueler, forbidden_ent
local length = 2
local pre_rail = stop_rail
local layout_pattern = {0}
local type_filter = {"inserter", "pump", "arithmetic-combinator"}
local type_filter = {"inserter", "pump", "arithmetic-combinator", "loader-1x1"}
local wagon_number = 0
for i = 1, 112 do
local rail, rail_direction, rail_connection_direction = pre_rail.get_connected_rail({rail_direction = rail_direction_from_stop, rail_connection_direction = defines.rail_connection_direction.straight})
@@ -510,6 +510,17 @@ function reset_stop_layout(map_data, stop, is_station_or_refueler, forbidden_ent
end
end
end
elseif entity.type == "loader-1x1" then
if not supports_cargo then
local direction = entity.direction
if is_ver then
if direction == defines.direction.east or defines.direction.west then
supports_cargo = true
end
elseif direction == defines.direction.north or direction == defines.direction.south then
supports_cargo = true
end
end
elseif entity.type == "pump" then
if not supports_fluid and entity.pump_rail_target then
local direction = entity.direction
@@ -658,3 +669,98 @@ function update_stop_from_inserter(map_data, inserter, forbidden_entity)
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
end
---@param map_data MapData
---@param loader LuaEntity
---@param forbidden_entity LuaEntity?
function update_stop_from_loader(map_data, loader, forbidden_entity)
local surface = loader.surface
local direction = loader.direction
local loader_type = loader.loader_type
local position = loader.position
--check input/output direction and loader position, and case position and modify x or y by +/- 1 for search
if loader_type == "input" then --loading train
if direction == defines.direction.east then
position.x = position.x + 1 -- input and facing east -> move on X axis 1 to the right
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
elseif direction == defines.direction.south then
position.y = position.y - 1 -- input and facing south -> move on Y axis down 1 unit
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
elseif direction == defines.direction.west then
position.x = position.x - 1 -- input and facing west -> move on X axis 1 to the left
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
elseif direction == defines.direction.north then
position.y = position.y + 1 -- input and facing south -> move on Y axis up 1 unit
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
end
elseif loader_type == "output" then --unloading train
if direction == defines.direction.east then
position.x = position.x - 1 -- output and facing east -> move on X axis 1 to the left
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
elseif direction == defines.direction.south then
position.y = position.y + 1 -- output and facing south -> move on Y axis up 1 unit
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
elseif direction == defines.direction.west then
position.x = position.x + 1 -- output and facing west -> move on X axis 1 to the right
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
elseif direction == defines.direction.north then
position.y = position.y - 1 -- output and facing south -> move on Y axis down 1 unit
local rails = surface.find_entities_filtered({
type = "straight-rail",
position = position,
radius = 1,
})
if rails[1] then
update_stop_from_rail(map_data, rails[1], forbidden_entity)
end
end
end
end

View File

@@ -617,6 +617,8 @@ local function on_built(event)
on_combinator_built(global, entity)
elseif entity.type == "inserter" then
update_stop_from_inserter(global, entity)
elseif entity.type == "loader-1x1" then
update_stop_from_loader(global, entity)
elseif entity.type == "pump" then
update_stop_from_pump(global, entity)
elseif entity.type == "straight-rail" then
@@ -633,6 +635,8 @@ local function on_broken(event)
on_combinator_broken(global, entity)
elseif entity.type == "inserter" then
update_stop_from_inserter(global, entity, entity)
elseif entity.type == "loader-1x1" then
update_stop_from_loader(global, entity)
elseif entity.type == "pump" then
update_stop_from_pump(global, entity, entity)
elseif entity.type == "straight-rail" then
@@ -841,6 +845,7 @@ local filter_built = {
{filter = "type", type = "inserter"},
{filter = "type", type = "pump"},
{filter = "type", type = "straight-rail"},
{filter = "type", type = "loader-1x1"},
}
local filter_broken = {
{filter = "name", name = "train-stop"},
@@ -848,6 +853,7 @@ local filter_broken = {
{filter = "type", type = "inserter"},
{filter = "type", type = "pump"},
{filter = "type", type = "straight-rail"},
{filter = "type", type = "loader-1x1"},
{filter = "rolling-stock"},
}
local function main()