Skip to content

Commit 6edd69e

Browse files
committed
Version: 1.16.8
Date: 2022-06-19 Features: - show cargo as rich text in no-provider-found, provider-found, creating-delivery #283 - added map-setting: Providers output existing cargo (default on), workaround for inserters stuck with items # 272, #294
1 parent 9542f06 commit 6edd69e

File tree

9 files changed

+53
-30
lines changed

9 files changed

+53
-30
lines changed

changelog.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
---------------------------------------------------------------------------------------------------
2+
Version: 1.16.8
3+
Date: 2022-06-19
4+
Features:
5+
- show cargo as rich text in no-provider-found, provider-found, creating-delivery #283
6+
- added map-setting: Providers output existing cargo (default on), workaround for inserters stuck with items # 272, #294
7+
---------------------------------------------------------------------------------------------------
28
Version: 1.16.7
39
Date: 2021-11-17
410
Bugfixes:

info.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "LogisticTrainNetwork",
3-
"version": "1.16.7",
3+
"version": "1.16.8",
44
"title": "LTN - Logistic Train Network",
55
"author": "Optera",
66
"contact": "https://forums.factorio.com/memberlist.php?mode=viewprofile&u=21729",

locale/de/settings.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ ltn-dispatcher-finish-loading=Beladung abschließen
1818
ltn-depot-reset-filters=Waggonfilter in Depots löschen
1919
ltn-depot-fluid-cleaning=Automatisch entfernte Flüssigkeitsmenge
2020
ltn-stop-default-network=Standard Netzwerk ID
21+
ltn-provider-show-existing-cargo=Anbieter zeigen existierende Ladung
2122

2223
[mod-setting-description]
2324
ltn-interface-console-level=Nachrichten Detailgrad.\n\n0: Aus\nKeine Nachrichten werden generiert.\n\n1: Fehler & Warnungen\nNur Fehler & Warnungen werden generiert.\n\n2: Informationen (Standardwert)\nInformiert über grundlegende Informationen wie fehlende Ressourcen und erstellte Lieferungen.\n\n3: Ausführliche Nachrichten\nErweiterte Informationen über Stations- und Zug-Suche.
@@ -39,6 +40,7 @@ ltn-dispatcher-finish-loading=Aktiv: (Standardwert)\nVerhindert verlassen von Ha
3940
ltn-depot-reset-filters=Aktiv: (Standardwert)\nFilter und Stapelbegrenzungen in Güterwaggons werden bei Ankunft im Depot gelöscht.
4041
ltn-depot-fluid-cleaning=Maximale Flüssigkeitsmenge pro Waggon die bei Ankunft im Depot automatisch zerstört wird.\n0 schaltet diese Funktion aus.
4142
ltn-stop-default-network=Netzwerk ID wenn kein Signal "Kodierte Netzwerk ID" existiert.
43+
ltn-provider-show-existing-cargo=Aktiv: (Standardwert)\nExistierende Ladung von Zügen bei Ankunft am Anbieter wird im Haltestellen Signalausgang gezeigt.\nBeinhaltet Gegenstände die Greifarme auf die Gleise halten.
4244

4345
[string-mod-setting]
4446
#<setting-name>-<dropdown-item-name>=<translated item>

locale/en/settings.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ ltn-dispatcher-finish-loading=Finish loading
1919
ltn-depot-reset-filters=Depots reset filters
2020
ltn-depot-fluid-cleaning=Depot fluid removal limit
2121
ltn-stop-default-network=Default network ID
22+
ltn-provider-show-existing-cargo=Providers output existing cargo
2223

2324
[mod-setting-description]
2425
ltn-interface-console-level=Detail level of in game messages.\n\n0: Off\nNo messages will be generated.\n\n1: Errors & Warnings\nPrint only errors and warnings.\n\n2: Notifications (default)\nPrint basic information like missing resources or generating deliveries.\n\n3: Detailed Messages\nPrint detailed information about finding providers and trains.
@@ -40,6 +41,7 @@ ltn-dispatcher-finish-loading=True: (default)\nPrevents trains from leaving whil
4041
ltn-depot-reset-filters=True: (default)\nCargo wagons have their filters and stack limitations cleared when entering a depot.
4142
ltn-depot-fluid-cleaning=Maximum amount of fluid per wagon automatically destroyed when entering depots.\nSet to 0 to disable.
4243
ltn-stop-default-network=Network ID used for stops without "Encoded Network ID" signal.
44+
ltn-provider-show-existing-cargo=True: (default)\nCargo inside train when arriving at provider is shown in LTN Output.\nIncludes items from inserters holding items on tracks.
4345

4446
[string-mod-setting]
4547
#<setting-name>-<dropdown-item-name>=<translated item>

script/dispatcher.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ function ProcessRequest(reqIndex, request)
496496
-- get providers ordered by priority
497497
local providers = getProviders(requestStation, item, count, min_carriages, max_carriages)
498498
if not providers or #providers < 1 then
499-
if requestStation.no_warnings == false and message_level >= 1 then printmsg({"ltn-message.no-provider-found", to_gps, localname, to_network_id_string}, requestForce, true) end
499+
if requestStation.no_warnings == false and message_level >= 1 then printmsg({"ltn-message.no-provider-found", to_gps, "[" .. itype .. "=" .. iname .. "]", to_network_id_string}, requestForce, true) end
500500
if debug_log then log(format("No supply of %s found for Requester %s: surface: %s min length: %s, max length: %s, network-ID: %s", item, to, surface_name, min_carriages, max_carriages, to_network_id_string) ) end
501501
-- goto skipRequestItem
502502
return nil
@@ -510,7 +510,7 @@ function ProcessRequest(reqIndex, request)
510510
local from_gps = MakeGpsString(providerData.entity, from)
511511
local matched_network_id_string = format("0x%x", band(providerData.network_id))
512512

513-
if message_level >= 3 then printmsg({"ltn-message.provider-found", from_gps, tostring(providerData.priority), tostring(providerData.activeDeliveryCount), providerData.count, localname}, requestForce, true) end
513+
if message_level >= 3 then printmsg({"ltn-message.provider-found", from_gps, tostring(providerData.priority), tostring(providerData.activeDeliveryCount), providerData.count, "[" .. itype .. "=" .. iname .. "]"}, requestForce, true) end
514514
-- if debug_log then
515515
-- for n, provider in pairs (providers) do
516516
-- log("Provider["..n.."] "..provider.entity.backer_name..": Priority "..tostring(provider.priority)..", "..tostring(provider.activeDeliveryCount).." deliveries, "..tostring(provider.count).." "..item.." available.")
@@ -615,7 +615,7 @@ function ProcessRequest(reqIndex, request)
615615
-- create delivery
616616
if message_level >= 2 then
617617
if #loadingList == 1 then
618-
printmsg({"ltn-message.creating-delivery", from_gps, to_gps, loadingList[1].count, loadingList[1].localname}, requestForce)
618+
printmsg({"ltn-message.creating-delivery", from_gps, to_gps, loadingList[1].count, "[" .. loadingList[1].type .. "=" .. loadingList[1].name .. "]"}, requestForce)
619619
else
620620
printmsg({"ltn-message.creating-delivery-merged", from_gps, to_gps, totalStacks}, requestForce)
621621
end

script/settings.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ end
2727
depot_reset_filters = settings.global["ltn-depot-reset-filters"].value
2828
depot_fluid_cleaning = settings.global["ltn-depot-fluid-cleaning"].value
2929
default_network = settings.global["ltn-stop-default-network"].value
30+
provider_show_existing_cargo = settings.global["ltn-provider-show-existing-cargo"].value
3031

3132

3233
script.on_event(defines.events.on_runtime_mod_setting_changed, function(event)
@@ -99,4 +100,7 @@ script.on_event(defines.events.on_runtime_mod_setting_changed, function(event)
99100
if event.setting == "ltn-stop-default-network" then
100101
default_network = settings.global["ltn-stop-default-network"].value
101102
end
103+
if event.setting == "ltn-provider-show-existing-cargo" then
104+
provider_show_existing_cargo = settings.global["ltn-provider-show-existing-cargo"].value
105+
end
102106
end)

script/stop-update.lua

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ function setLamp(trainStop, color, count)
361361
end
362362

363363

364-
function UpdateStopOutput(trainStop)
364+
function UpdateStopOutput(trainStop, ignore_existing_cargo)
365365
-- skip invalid stop outputs
366366
if not trainStop.output.valid then
367367
return
@@ -375,8 +375,8 @@ function UpdateStopOutput(trainStop)
375375
local carriages = trainStop.parked_train.carriages
376376
local encoded_positions_by_name = {}
377377
local encoded_positions_by_type = {}
378-
local inventory = trainStop.parked_train.get_contents() or {}
379-
local fluidInventory = trainStop.parked_train.get_fluid_contents() or {}
378+
local inventory = not(ignore_existing_cargo) and trainStop.parked_train.get_contents() or {}
379+
local fluidInventory = not(ignore_existing_cargo) and trainStop.parked_train.get_fluid_contents() or {}
380380

381381
if #carriages < 32 then --prevent circuit network integer overflow error
382382
if trainStop.parked_train_faces_stop then --train faces forwards >> iterate normal
@@ -425,8 +425,6 @@ function UpdateStopOutput(trainStop)
425425

426426
if not trainStop.is_depot then
427427
-- Update normal stations
428-
local loadingList = {}
429-
local fluidLoadingList = {}
430428
local conditions = trainStop.parked_train.schedule.records[trainStop.parked_train.schedule.current].wait_conditions
431429
if conditions ~= nil then
432430
for _, c in pairs(conditions) do

script/train-events.lua

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ function TrainArrives(train)
3939
else
4040
stop.parked_train_faces_stop = true
4141
end
42+
local is_provider = false
4243

4344
if message_level >= 3 then printmsg({"ltn-message.train-arrived", tostring(trainName), stop_name}, trainForce, false) end
4445
if debug_log then log(format("(TrainArrives) Train [%d] \"%s\": arrived at LTN-stop [%d] \"%s\"; train_faces_stop: %s", train.id, trainName, stopID, stop_name, stop.parked_train_faces_stop )) end
@@ -135,28 +136,31 @@ function TrainArrives(train)
135136
else -- stop is no Depot
136137
-- check requester for incorrect shipment
137138
local delivery = global.Dispatcher.Deliveries[train.id]
138-
if delivery and delivery.to_id == stop.entity.unit_number then
139-
local requester_unscheduled_cargo = false
140-
local unscheduled_load = {}
141-
local train_items = train.get_contents()
142-
for name, count in pairs(train_items) do
143-
local typed_name = "item,"..name
144-
if not delivery.shipment[typed_name] then
145-
requester_unscheduled_cargo = true
146-
unscheduled_load[typed_name] = count
139+
if delivery then
140+
is_provider = delivery.from_id == stop.entity.unit_number
141+
if delivery.to_id == stop.entity.unit_number then
142+
local requester_unscheduled_cargo = false
143+
local unscheduled_load = {}
144+
local train_items = train.get_contents()
145+
for name, count in pairs(train_items) do
146+
local typed_name = "item,"..name
147+
if not delivery.shipment[typed_name] then
148+
requester_unscheduled_cargo = true
149+
unscheduled_load[typed_name] = count
150+
end
147151
end
148-
end
149-
local train_fluids = train.get_fluid_contents()
150-
for name, count in pairs(train_fluids) do
151-
local typed_name = "fluid,"..name
152-
if not delivery.shipment[typed_name] then
153-
requester_unscheduled_cargo = true
154-
unscheduled_load[typed_name] = count
152+
local train_fluids = train.get_fluid_contents()
153+
for name, count in pairs(train_fluids) do
154+
local typed_name = "fluid,"..name
155+
if not delivery.shipment[typed_name] then
156+
requester_unscheduled_cargo = true
157+
unscheduled_load[typed_name] = count
158+
end
159+
end
160+
if requester_unscheduled_cargo then
161+
create_alert(stop.entity, "cargo-alert", {"ltn-message.requester_unscheduled_cargo", trainName, stop_name}, trainForce)
162+
script.raise_event(on_requester_unscheduled_cargo_alert, {train = train, station = stop.entity, planned_shipment = delivery.shipment, unscheduled_load = unscheduled_load})
155163
end
156-
end
157-
if requester_unscheduled_cargo then
158-
create_alert(stop.entity, "cargo-alert", {"ltn-message.requester_unscheduled_cargo", trainName, stop_name}, trainForce)
159-
script.raise_event(on_requester_unscheduled_cargo_alert, {train = train, station = stop.entity, planned_shipment = delivery.shipment, unscheduled_load = unscheduled_load})
160164
end
161165
end
162166

@@ -170,7 +174,7 @@ function TrainArrives(train)
170174
end
171175
end
172176

173-
UpdateStopOutput(stop)
177+
UpdateStopOutput(stop, is_provider and not(provider_show_existing_cargo) )
174178
end
175179
end
176180

settings.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,11 @@ data:extend({
156156
setting_type = "runtime-global",
157157
default_value = -1, -- any
158158
},
159+
{
160+
type = "bool-setting",
161+
name = "ltn-provider-show-existing-cargo",
162+
order = "eb",
163+
setting_type = "runtime-global",
164+
default_value = true
165+
},
159166
})

0 commit comments

Comments
 (0)