diff --git a/FS25_ADSmartPickup/adFieldFleet.lua b/FS25_ADSmartPickup/adFieldFleet.lua
index 4908644..50f1d73 100644
--- a/FS25_ADSmartPickup/adFieldFleet.lua
+++ b/FS25_ADSmartPickup/adFieldFleet.lua
@@ -145,3 +145,27 @@ function ADFieldFleet.toggle(enabledIds, id)
copy[id] = (not copy[id]) or nil
return copy
end
+
+-- Til menuen: skjul maskiner der er faste på en ANDEN mark end den valgte. Returnerer synlige, antal
+-- skjulte og de marker de er faste på (sorteret). selectedFieldId nil = vis alle.
+function ADFieldFleet.visibleForField(rigs, selectedFieldId, rigIdsByField)
+ if selectedFieldId == nil then return rigs, 0, {} end
+ local ownerOf = {}
+ for fieldId, ids in pairs(rigIdsByField or {}) do
+ for _, id in ipairs(ids or {}) do ownerOf[id] = fieldId end
+ end
+ local visible, hidden, fieldSet = {}, 0, {}
+ for _, rig in ipairs(rigs or {}) do
+ local owner = ownerOf[rig.id]
+ if owner ~= nil and owner ~= selectedFieldId then
+ hidden = hidden + 1
+ fieldSet[owner] = true
+ else
+ table.insert(visible, rig)
+ end
+ end
+ local fields = {}
+ for fieldId in pairs(fieldSet) do table.insert(fields, fieldId) end
+ table.sort(fields, function(a, b) return tostring(a) < tostring(b) end)
+ return visible, hidden, fields
+end
diff --git a/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua b/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua
index fdd467d..58b6b4b 100644
--- a/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua
+++ b/FS25_ADSmartPickup/gui/SmartPickupFieldTab.lua
@@ -387,6 +387,21 @@ function SmartPickupFrame:rigDetails(rig)
return #parts > 0 and (" — " .. table.concat(parts, " — ")) or ""
end
+-- {[fieldId] = rigIds} for alle marker
+local function rigIdsByField()
+ local byField = {}
+ for fieldId, field in pairs(ADFieldJobs.state.fields) do byField[fieldId] = field.plan ~= nil and field.plan.rigIds or {} end
+ return byField
+end
+
+-- "3 maskiner er faste på andre marker (F22, F90)"
+function SmartPickupFrame:addHiddenDedicatedRow(hidden, fields)
+ if hidden <= 0 then return end
+ local names = {}
+ for _, fieldId in ipairs(fields) do table.insert(names, "F" .. tostring(fieldId)) end
+ self:addTextRow(" " .. string.format(self.i18n:getText("spu_field_hiddenDedicated"), hidden, table.concat(names, ", ")))
+end
+
-- Faste maskiner til den valgte mark: en fast maskine bruges kun her, og marken venter på sin egen hellere
-- end at låne en anden med samme opgave. Maskiner der er faste på en anden mark er markeret.
function SmartPickupFrame:fillDedicatedRows(adEnv, field)
@@ -396,7 +411,7 @@ function SmartPickupFrame:fillDedicatedRows(adEnv, field)
for fieldId, other in pairs(ADFieldJobs.state.fields) do
for _, id in ipairs(other.plan ~= nil and other.plan.rigIds or {}) do owner[id] = fieldId end
end
- local rigs = ADFieldJobs.getRigs(adEnv)
+ local rigs, hiddenRigs, hiddenFields = ADFieldFleet.visibleForField(ADFieldJobs.getRigs(adEnv), field.id, rigIdsByField())
table.sort(rigs, function(a, b)
local ma, mb = owner[a.id] == field.id, owner[b.id] == field.id
if ma ~= mb then return ma end
@@ -410,6 +425,7 @@ function SmartPickupFrame:fillDedicatedRows(adEnv, field)
row:getDescendantByName("title"):setText(string.format(" %s — %s%s", tostring(rig.label), self:roleText(rig.role), elsewhere))
row:getDescendantByName("option"):setState(owner[rig.id] == field.id and SmartPickupFrame.STATE_ON or SmartPickupFrame.STATE_OFF, false)
end
+ self:addHiddenDedicatedRow(hiddenRigs, hiddenFields)
end
function SmartPickupFrame:fillFleetRows(adEnv)
@@ -417,7 +433,8 @@ function SmartPickupFrame:fillFleetRows(adEnv)
self:addTextRow(i18n:getText("spu_field_section_fleet"))
local useAll = ADFieldJobs.state.fleetMode ~= "ticked"
self:addToggleRow("fleetMode", i18n:getText("spu_field_fleetAll"), {i18n:getText("ui_no"), i18n:getText("ui_yes")}, useAll)
- local rigs = ADFieldJobs.getRigs(adEnv)
+ -- valgt mark: maskiner der er faste på en anden mark skjules (de kan ikke bruges her)
+ local rigs, hiddenRigs, hiddenFields = ADFieldFleet.visibleForField(ADFieldJobs.getRigs(adEnv), self.selectedFieldId, rigIdsByField())
table.sort(rigs, function(a, b)
if a.role ~= b.role then return a.role < b.role end
return ADFlowView.naturalLess(a.label, b.label)
@@ -431,6 +448,7 @@ function SmartPickupFrame:fillFleetRows(adEnv)
if #rigs == 0 then
self:addTextRow(" " .. i18n:getText("spu_field_noRigs"))
end
+ self:addHiddenDedicatedRow(hiddenRigs, hiddenFields)
end
-- ---- live ----
diff --git a/FS25_ADSmartPickup/l10n/l10n_da.xml b/FS25_ADSmartPickup/l10n/l10n_da.xml
index 3546aea..f989284 100644
--- a/FS25_ADSmartPickup/l10n/l10n_da.xml
+++ b/FS25_ADSmartPickup/l10n/l10n_da.xml
@@ -93,6 +93,7 @@
+
diff --git a/FS25_ADSmartPickup/l10n/l10n_en.xml b/FS25_ADSmartPickup/l10n/l10n_en.xml
index 1f6fe64..4dca23c 100644
--- a/FS25_ADSmartPickup/l10n/l10n_en.xml
+++ b/FS25_ADSmartPickup/l10n/l10n_en.xml
@@ -93,6 +93,7 @@
+
diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml
index e70b9ff..43df2d5 100644
--- a/FS25_ADSmartPickup/modDesc.xml
+++ b/FS25_ADSmartPickup/modDesc.xml
@@ -1,7 +1,7 @@
masterdraco
- 1.30.2.0
+ 1.30.3.0
AD Smart Pickup
diff --git a/tests/test_adFieldFleet.lua b/tests/test_adFieldFleet.lua
index 2f4382a..6d49ab9 100644
--- a/tests/test_adFieldFleet.lua
+++ b/tests/test_adFieldFleet.lua
@@ -122,5 +122,12 @@ check("FLD flyt: fast på F109", moved[109][1], "sprøjte")
check("FLD original urørt", byField[22][1], "sprøjte")
check("FLD fjern", #F.dedicate(moved, 109, "sprøjte", false)[109], 0)
+-- FLV: menuen skjuler maskiner der er faste på en anden mark end den valgte
+local vrigs = {{id = "vogn"}, {id = "harve"}, {id = "plov"}}
+local vis, hid, flds = F.visibleForField(vrigs, 18, {[22] = {"vogn", "harve"}})
+check("FLV F18 ser kun de frie", #vis .. "/" .. hid .. "/" .. tostring(flds[1]), "1/2/22")
+check("FLV F22 ser alle", #(F.visibleForField(vrigs, 22, {[22] = {"vogn", "harve"}})), 3)
+check("FLV ingen valgt = alle", #(F.visibleForField(vrigs, nil, {[22] = {"vogn"}})), 3)
+
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
os.exit(failures == 0 and 0 or 1)