From 4ae268376de1493bb0aa7eca7c5ca3c69a35372b Mon Sep 17 00:00:00 2001 From: masterdraco Date: Sun, 27 Sep 2026 13:13:52 +0200 Subject: [PATCH] =?UTF-8?q?chore(diag):=20log=20pr.=20stald=20hvilke=20mar?= =?UTF-8?q?k=C3=B8rer=20l=C3=A6sse-/afl=C3=A6sningspunkterne=20ligger=20n?= =?UTF-8?q?=C3=A6rmest=20=E2=80=94=20Goat=20Food=20fik=20Sheep=20Milk-mark?= =?UTF-8?q?=C3=B8rer=20som=20m=C3=A5l=20(v1.36.4.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FS25_ADSmartPickup/adBuildings.lua | 39 ++++++++++++++++++++++++++++++ FS25_ADSmartPickup/modDesc.xml | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/FS25_ADSmartPickup/adBuildings.lua b/FS25_ADSmartPickup/adBuildings.lua index 3ba50c6..97cec0f 100644 --- a/FS25_ADSmartPickup/adBuildings.lua +++ b/FS25_ADSmartPickup/adBuildings.lua @@ -219,6 +219,44 @@ end -- Aflæsningsmarkør: nærmeste ikke-Wait-markør ≤ MAX_MARKER_DISTANCE til aflæsningsnoderne — men ikke -- bygningens egne LÆSSEmarkører, når der findes en anden (Sugarbeet Crusher: pickup står tættere på -- aflæsningstriggeren end drop). Kun én fælles markør (AIO Load / Unload) bruges til begge. +-- Diagnose (én gang pr. stald pr. session): hvilke markører ligger nærmest læsse- og aflæsningspunkterne. +-- (in-game 27/9: Goat Food fik "Sheep Milk"-markørerne som mål og Goat Milk Pickup "Sheep Food" som kilde) +local diagnosed = {} +local function closestMarkers(adEnv, nodes, count) + local positions, found = {}, {} + for _, node in ipairs(nodes) do + local x, z = getNodePosition(node) + if x ~= nil then table.insert(positions, {x = x, z = z}) end + end + for _, marker in pairs(adEnv.ADGraphManager:getMapMarkers()) do + local wayPoint = not ADSupplyPlanner.isWaitMarker(marker) and adEnv.ADGraphManager:getWayPointById(marker.id) or nil + if wayPoint ~= nil then + local nearest = nil + for _, position in ipairs(positions) do + local distance = math.sqrt((wayPoint.x - position.x) ^ 2 + (wayPoint.z - position.z) ^ 2) + if nearest == nil or distance < nearest then nearest = distance end + end + if nearest ~= nil and nearest < ADBuildings.MAX_MARKER_DISTANCE then table.insert(found, {name = tostring(marker.name), distance = nearest}) end + end + end + table.sort(found, function(a, b) return a.distance < b.distance end) + local parts = {} + for index = 1, math.min(count, #found) do table.insert(parts, string.format("%s %.0f m", found[index].name, found[index].distance)) end + return #parts > 0 and table.concat(parts, ", ") or "ingen markør" +end + +local function diagnoseHusbandry(adEnv, id, name, loadGroups, unloadNodes, loadMarkers, unloadMarker) + if diagnosed[id] then return end + diagnosed[id] = true + local groups = {} + for index, nodes in ipairs(loadGroups) do table.insert(groups, string.format("læs%d: %s", index, closestMarkers(adEnv, nodes, 2))) end + local loads = {} + for _, marker in ipairs(loadMarkers) do table.insert(loads, tostring(marker.name)) end + Logging.info("ADSmartPickup: stald '%s': %s | aflæsning nærmest: %s | valgt læs=[%s] aflæs=%s", tostring(name), + #groups > 0 and table.concat(groups, "; ") or "ingen læssegrupper", closestMarkers(adEnv, unloadNodes, 3), + table.concat(loads, ", "), unloadMarker ~= nil and tostring(unloadMarker.name) or "-") +end + local function unloadMarkerFor(adEnv, nodes, loadMarkers, allowSkipLoad) if #nodes == 0 then return nil @@ -344,6 +382,7 @@ local function build(adEnv, farmId) end -- siloer og palleskure læsser og aflæsser samme sted: altid nærmeste markør local unloadMarker = unloadMarkerFor(adEnv, unloadNodes, loadMarkers, kind ~= "silo" and kind ~= "objectStorage") + if kind == "husbandry" then pcall(diagnoseHusbandry, adEnv, id, getName(placeable, id), loadGroups, unloadNodes, loadMarkers, unloadMarker) end -- silo der kun kan FYLDES (fx drive-on-bunker der fodrer en biogas-fermentor): aflæsning, -- ingen læssestation -> et forsyningsmål, aldrig en kilde local isFillOnlySilo = kind == "silo" and loadMarkers[1] == nil and #loadGroups == 0 and unloadMarker ~= nil diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 3fba9f3..3561806 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.36.3.0 + 1.36.4.0 <en>AD Smart Pickup</en>