feat: run-indstilling 'Kør hjem fra Wait under X %' (10–90, standard 50) i model, XML, Wait-regel og fane (v1.10.2.0)

This commit is contained in:
2026-09-23 01:47:42 +02:00
parent ef69347c55
commit 231d6a41d6
12 changed files with 98 additions and 6 deletions
+28 -1
View File
@@ -61,6 +61,23 @@ function SmartPickupFrame:initialize()
table.insert(loopTexts, tostring(loops))
end
self.loopsOption:setTexts(loopTexts)
self.returnBelowSteps = {}
local percentTexts = {}
for percent = ADRuns.MIN_RETURN_BELOW_PERCENT, ADRuns.MAX_RETURN_BELOW_PERCENT, 10 do
table.insert(self.returnBelowSteps, percent)
table.insert(percentTexts, string.format("%d %%", percent))
end
self.returnBelowOption:setTexts(percentTexts)
end
function SmartPickupFrame:getReturnBelowIndex(run)
local index = 1
for position, percent in ipairs(self.returnBelowSteps or {}) do
if percent <= (run.returnBelowPercent or ADRuns.DEFAULT_RETURN_BELOW_PERCENT) then
index = position
end
end
return index
end
-- FocusManager har skiftet API mellem FS-versioner; her hentes det fokuserede element
@@ -228,7 +245,7 @@ function SmartPickupFrame:rebuild()
self:fillRunOption(adEnv)
local run = self:getRun()
local hasRun = run ~= nil and adEnv ~= nil
for _, element in ipairs({self.targetOption, self.ingredientModeOption, self.waitPoolOption, self.loopsOption}) do
for _, element in ipairs({self.targetOption, self.ingredientModeOption, self.waitPoolOption, self.loopsOption, self.returnBelowOption}) do
element:setDisabled(not hasRun)
end
if hasRun then
@@ -238,6 +255,7 @@ function SmartPickupFrame:rebuild()
self.needsRow = self:addTextRow(self:describeNeeds(adEnv, run))
self:fillWaitPoolOption(adEnv, run)
self.loopsOption:setState(run.loops + 1, false)
self.returnBelowOption:setState(self:getReturnBelowIndex(run), false)
self:addTextRow(self.i18n:getText("spu_vehicles"))
self:fillVehicleRows(adEnv, run)
end
@@ -398,6 +416,7 @@ function SmartPickupFrame:syncOptionsFromModel(adEnv, run)
end
sync(self.waitPoolOption, poolIndex)
sync(self.loopsOption, run.loops + 1)
sync(self.returnBelowOption, self:getReturnBelowIndex(run))
end
-- "Silage 0/33.750 l · Straw 21.375/21.375 l" — mest trængende først.
@@ -631,6 +650,14 @@ function SmartPickupFrame:onClickLoops(state)
end)
end
function SmartPickupFrame:onClickReturnBelow(state)
self:safe(function(frame)
local run = frame:getRun()
if run == nil then return end
ADRunsController.updateRun(run.id, {returnBelowPercent = frame.returnBelowSteps[state] or ADRuns.DEFAULT_RETURN_BELOW_PERCENT})
end)
end
function SmartPickupFrame:onClickVehicle(state, element)
self:safe(function(frame)
local run, data = frame:getRun(), frame.rowData[element]