refactor(gui): fjern død kode fra den gamle flow-detaljeliste (retning/bygninger/varer/kilder-rækker) efter review; marklisten til guidens trin 1 hentes kun når den bruges (v1.32.1.0)
This commit is contained in:
@@ -121,7 +121,9 @@ end
|
|||||||
function SmartPickupFrame:fieldGuideContext(adEnv, info, plan, chosenStoreIds)
|
function SmartPickupFrame:fieldGuideContext(adEnv, info, plan, chosenStoreIds)
|
||||||
local sowable, mowable, straw = self:fruitContext()
|
local sowable, mowable, straw = self:fruitContext()
|
||||||
local context = {info = info or {}, sowable = sowable, mowable = mowable, straw = straw,
|
local context = {info = info or {}, sowable = sowable, mowable = mowable, straw = straw,
|
||||||
rigIdsByField = SmartPickupFrame.rigIdsByField(), fieldSilos = {}, storeHidden = 0, fields = self:fieldPickList(), rigs = {}}
|
rigIdsByField = SmartPickupFrame.rigIdsByField(), fieldSilos = {}, storeHidden = 0, fields = {}, rigs = {}}
|
||||||
|
-- marklisten bruges kun i trin 1 (guiden åbnet uden valgt mark)
|
||||||
|
if info == nil then context.fields = self:fieldPickList() end
|
||||||
for _, rig in ipairs(ADFieldJobs.getRigs(adEnv)) do
|
for _, rig in ipairs(ADFieldJobs.getRigs(adEnv)) do
|
||||||
table.insert(context.rigs, {id = rig.id, role = rig.role, text = string.format("%s — %s", tostring(rig.label), self:roleText(rig.role))})
|
table.insert(context.rigs, {id = rig.id, role = rig.role, text = string.format("%s — %s", tostring(rig.label), self:roleText(rig.role))})
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -139,33 +139,4 @@ end
|
|||||||
|
|
||||||
-- ---- callbacks ----
|
-- ---- callbacks ----
|
||||||
|
|
||||||
function SmartPickupFrame:onClickDirection(state)
|
|
||||||
self:safe(function(frame)
|
|
||||||
local run = frame:getRun()
|
|
||||||
if run == nil then return end
|
|
||||||
ADRunsController.updateRun(run.id, {kind = state == SmartPickupFrame.STATE_ON and "outbound" or "supply"})
|
|
||||||
frame:requestRebuild()
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:onClickBuilding(state, element)
|
|
||||||
self:safe(function(frame)
|
|
||||||
local run, data = frame:getRun(), frame.rowData[element]
|
|
||||||
if run == nil or data == nil then return end
|
|
||||||
if data.kind == "sourceBuilding" then
|
|
||||||
ADRunsController.store = ADRuns.toggleSourceBuilding(ADRunsController.store, run.id, data.buildingId)
|
|
||||||
elseif data.kind == "storeBuilding" then
|
|
||||||
ADRunsController.store = ADRuns.toggleStoreBuilding(ADRunsController.store, run.id, data.buildingId)
|
|
||||||
local updatedStore = ADRuns.getRun(ADRunsController.store, run.id)
|
|
||||||
Logging.info(SmartPickupFrame.LOG_PREFIX .. "run '%s': storeBuildings=%s", tostring(run.name), table.concat(updatedStore.storeBuildingIds or {}, " "))
|
|
||||||
frame:requestRebuild()
|
|
||||||
return
|
|
||||||
else
|
|
||||||
ADRunsController.store = ADRuns.toggleTargetBuilding(ADRunsController.store, run.id, data.buildingId)
|
|
||||||
end
|
|
||||||
local updated = ADRuns.getRun(ADRunsController.store, run.id)
|
|
||||||
Logging.info(SmartPickupFrame.LOG_PREFIX .. "run '%s': %s=%s", tostring(run.name), data.kind == "sourceBuilding" and "sourceBuildings" or "targetBuildings", table.concat(data.kind == "sourceBuilding" and updated.sourceBuildingIds or updated.targetBuildingIds, " "))
|
|
||||||
ADRunsController.resolveMarkers(frame.getAdEnv(), updated)
|
|
||||||
frame:requestRebuild()
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|||||||
@@ -633,29 +633,12 @@ function SmartPickupFrame:onClickRun(state)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function SmartPickupFrame:onClickIngredient(state, element)
|
function SmartPickupFrame:onClickIngredient(state, element)
|
||||||
-- mål- og kilde-rækkerne deler prefab (og dermed onClick) med vare-rækkerne
|
-- guiderne og markflåden deler prefab (og dermed onClick) med vare-rækkerne
|
||||||
local data = self.rowData[element]
|
local data = self.rowData[element]
|
||||||
if data ~= nil and data.kind == "guideRow" then
|
if data ~= nil and data.kind == "guideRow" then
|
||||||
return self:onClickGuideRow(state, data)
|
return self:onClickGuideRow(state, data)
|
||||||
elseif data ~= nil and data.kind == "target" then
|
|
||||||
return self:onClickTarget(state, element)
|
|
||||||
elseif data ~= nil and data.kind == "source" then
|
|
||||||
return self:onClickSource(state, element)
|
|
||||||
elseif data ~= nil and data.kind == "ingredientMode" then
|
|
||||||
return self:onClickIngredientMode(state)
|
|
||||||
elseif data ~= nil and data.kind == "collectRound" then
|
|
||||||
return self:onClickCollectRound(state)
|
|
||||||
elseif data ~= nil and data.kind == "direction" then
|
|
||||||
return self:onClickDirection(state)
|
|
||||||
elseif data ~= nil and (data.kind == "showAllVehicles" or data.kind == "showAllBuildings") then
|
|
||||||
local isOn = state == SmartPickupFrame.STATE_ON
|
|
||||||
if data.kind == "showAllVehicles" then self.showAllVehicles = isOn else self.showAllBuildings = isOn end
|
|
||||||
self:requestRebuild()
|
|
||||||
return
|
|
||||||
elseif data ~= nil and SmartPickupFrame.FIELD_ROW_KINDS[data.kind] then
|
elseif data ~= nil and SmartPickupFrame.FIELD_ROW_KINDS[data.kind] then
|
||||||
return self:onClickFieldRow(state, data)
|
return self:onClickFieldRow(state, data)
|
||||||
elseif data ~= nil and (data.kind == "sourceBuilding" or data.kind == "targetBuilding" or data.kind == "storeBuilding") then
|
|
||||||
return self:onClickBuilding(state, element)
|
|
||||||
end
|
end
|
||||||
self:safe(function(frame)
|
self:safe(function(frame)
|
||||||
local run, data = frame:getRun(), frame.rowData[element]
|
local run, data = frame:getRun(), frame.rowData[element]
|
||||||
@@ -683,7 +666,7 @@ function SmartPickupFrame:onClickVehicle(state, element)
|
|||||||
local clicked = self.rowData[element]
|
local clicked = self.rowData[element]
|
||||||
-- markfanens maskinrækker (markflåden og markens faste maskiner) bruger samme række-type som flowets
|
-- markfanens maskinrækker (markflåden og markens faste maskiner) bruger samme række-type som flowets
|
||||||
-- traktorliste; de hører til markfanen (fieldRig blev før behandlet som flow-traktor og aldrig gemt)
|
-- traktorliste; de hører til markfanen (fieldRig blev før behandlet som flow-traktor og aldrig gemt)
|
||||||
if clicked ~= nil and (clicked.kind == "fleetVehicle" or clicked.kind == "fieldRig") then
|
if clicked ~= nil and clicked.kind == "fleetVehicle" then
|
||||||
return self:onClickFieldRow(state, clicked)
|
return self:onClickFieldRow(state, clicked)
|
||||||
end
|
end
|
||||||
if clicked ~= nil and clicked.kind == "guideRow" then
|
if clicked ~= nil and clicked.kind == "guideRow" then
|
||||||
|
|||||||
@@ -57,66 +57,9 @@ function SmartPickupFrame.getPolicyIndex(policies, policy)
|
|||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
|
|
||||||
function SmartPickupFrame:fillSourceRows(adEnv, run)
|
|
||||||
local chosen = {}
|
|
||||||
for _, id in ipairs(run.sourceWayPointIds or {}) do
|
|
||||||
chosen[id] = true
|
|
||||||
end
|
|
||||||
local entries = ADRunsController.getSourceMarkers(adEnv, g_currentMission:getFarmId())
|
|
||||||
for _, entry in ipairs(entries) do
|
|
||||||
local row = self:addRow(self.ingredientPrefab, {kind = "source", wayPointId = entry.marker.id})
|
|
||||||
local kindText = self.i18n:getText("spu_source_kind_" .. tostring(entry.kind))
|
|
||||||
row:getDescendantByName("title"):setText(string.format(" %s — %s (%s)", tostring(entry.marker.name), tostring(entry.name), kindText))
|
|
||||||
row:getDescendantByName("option"):setState(chosen[entry.marker.id] and SmartPickupFrame.STATE_ON or SmartPickupFrame.STATE_OFF, false)
|
|
||||||
end
|
|
||||||
if #entries == 0 then
|
|
||||||
self:addTextRow(self.i18n:getText("spu_noSources"))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:fillProductRows(adEnv, run)
|
|
||||||
self.productRows = {}
|
|
||||||
local products = ADRunsController.getRunProducts(adEnv, run)
|
|
||||||
for _, product in ipairs(products) do
|
|
||||||
local policies = SmartPickupFrame.getPoliciesFor(product)
|
|
||||||
local policyTexts = {}
|
|
||||||
for _, policy in ipairs(policies) do
|
|
||||||
table.insert(policyTexts, self.i18n:getText("spu_policy_" .. policy))
|
|
||||||
end
|
|
||||||
local row = self:addRow(self.productPrefab, {kind = "product", name = product.name, policies = policies})
|
|
||||||
local option = row:getDescendantByName("option")
|
|
||||||
option:setTexts(policyTexts)
|
|
||||||
option:setState(SmartPickupFrame.getPolicyIndex(policies, product.policy), false)
|
|
||||||
local title = row:getDescendantByName("title")
|
|
||||||
title:setText(self:describeProduct(adEnv, product))
|
|
||||||
table.insert(self.productRows, {name = product.name, title = title, option = option})
|
|
||||||
end
|
|
||||||
if #products == 0 then
|
|
||||||
self:addTextRow(#(run.sourceWayPointIds or {}) == 0 and self.i18n:getText("spu_noSources") or self.i18n:getText("spu_noProducts"))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:fillOutboundStatusRows(adEnv, run)
|
|
||||||
self.outboundStatusRows = {}
|
|
||||||
local status = ADRunsController.getOutboundStatus(adEnv, run)
|
|
||||||
for _, reason in ipairs(status.reasons or {}) do
|
|
||||||
table.insert(self.outboundStatusRows, self:addTextRow(string.format(self.i18n:getText("spu_outbound_waiting"), reason)))
|
|
||||||
end
|
|
||||||
if status.warning ~= nil then
|
|
||||||
table.insert(self.outboundStatusRows, self:addTextRow(string.format(self.i18n:getText("spu_outbound_warning"), status.warning)))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:rebuildOutboundTab(adEnv, run)
|
|
||||||
self.sellAtOption:setState(SmartPickupFrame.getStepIndex(self.sellAtSteps, run.sellAtPercent, ADRuns.DEFAULT_SELL_AT_PERCENT), false)
|
|
||||||
self.storeAboveOption:setState(SmartPickupFrame.getStepIndex(self.storeAboveSteps, run.storeAbovePercent, ADRuns.DEFAULT_STORE_ABOVE_PERCENT), false)
|
|
||||||
self.collectRoundRowOption = self:addToggleRow("collectRound", self.i18n:getText("spu_collectRound"), {self.i18n:getText("ui_no"), self.i18n:getText("ui_yes")}, run.collectRound == true)
|
|
||||||
self:addTextRow(self.i18n:getText("spu_section_sources"))
|
|
||||||
self:fillSourceRows(adEnv, run)
|
|
||||||
self:addTextRow(self.i18n:getText("spu_section_products"))
|
|
||||||
self:fillProductRows(adEnv, run)
|
|
||||||
self:fillOutboundStatusRows(adEnv, run)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Hvert sekund: produktrækkernes mængde/pris og statuslinjerne (antal linjer ændres kun ved rebuild).
|
-- Hvert sekund: produktrækkernes mængde/pris og statuslinjerne (antal linjer ændres kun ved rebuild).
|
||||||
function SmartPickupFrame:refreshOutboundRows(adEnv, run)
|
function SmartPickupFrame:refreshOutboundRows(adEnv, run)
|
||||||
@@ -167,15 +110,6 @@ end
|
|||||||
|
|
||||||
-- ---- callbacks ----
|
-- ---- callbacks ----
|
||||||
|
|
||||||
function SmartPickupFrame:onClickSource(state, element)
|
|
||||||
self:safe(function(frame)
|
|
||||||
local run, data = frame:getRun(), frame.rowData[element]
|
|
||||||
if run == nil or data == nil then return end
|
|
||||||
ADRunsController.store = ADRuns.toggleSource(ADRunsController.store, run.id, data.wayPointId)
|
|
||||||
Logging.info(SmartPickupFrame.LOG_PREFIX .. "run '%s': sources=%s", tostring(run.name), table.concat(ADRuns.getRun(ADRunsController.store, run.id).sourceWayPointIds, " "))
|
|
||||||
frame:requestRebuild()
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:onClickProduct(state, element)
|
function SmartPickupFrame:onClickProduct(state, element)
|
||||||
local clicked = self.rowData[element]
|
local clicked = self.rowData[element]
|
||||||
@@ -213,10 +147,3 @@ function SmartPickupFrame:onClickStoreAbove(state)
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
function SmartPickupFrame:onClickCollectRound(state)
|
|
||||||
self:safe(function(frame)
|
|
||||||
local run = frame:getRun()
|
|
||||||
if run == nil then return end
|
|
||||||
ADRunsController.updateRun(run.id, {collectRound = state == SmartPickupFrame.STATE_ON})
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|||||||
@@ -2,42 +2,8 @@
|
|||||||
-- Mål, varer (Auto/Vælg), behovsrække, ture og "kør hjem"-tærskel for et forsynings-run.
|
-- Mål, varer (Auto/Vælg), behovsrække, ture og "kør hjem"-tærskel for et forsynings-run.
|
||||||
-- Funktionerne lægges på SmartPickupFrame (indlæses efter SmartPickupFrame.lua).
|
-- Funktionerne lægges på SmartPickupFrame (indlæses efter SmartPickupFrame.lua).
|
||||||
|
|
||||||
function SmartPickupFrame:rebuildSupplyTab(adEnv, run)
|
|
||||||
self.loopsOption:setState(run.loops + 1, false)
|
|
||||||
self.returnBelowOption:setState(self:getReturnBelowIndex(run), false)
|
|
||||||
self:addTextRow(self.i18n:getText("spu_section_targets"))
|
|
||||||
self.ingredientModeRowOption = self:addToggleRow("ingredientMode", self.i18n:getText("spu_ingredientMode"), {self.i18n:getText("spu_mode_auto"), self.i18n:getText("spu_mode_manual")}, run.ingredientMode == "manual")
|
|
||||||
self:addTextRow(self.i18n:getText("spu_targets"))
|
|
||||||
self:fillTargetRows(adEnv, run)
|
|
||||||
self:fillIngredientRows(adEnv, run)
|
|
||||||
self:fillNeedsRows(adEnv, run)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Mål = afkrydsning (flere stalde/fabrikker pr. run). Ved hver tur vælges den der mangler mest.
|
|
||||||
function SmartPickupFrame:fillTargetRows(adEnv, run)
|
|
||||||
local chosen = {}
|
|
||||||
for _, id in ipairs(ADRunsController.getRunTargets(run)) do
|
|
||||||
chosen[id] = true
|
|
||||||
end
|
|
||||||
for _, marker in ipairs(ADRunsController.getTargetMarkers(adEnv, g_currentMission:getFarmId())) do
|
|
||||||
local row = self:addRow(self.ingredientPrefab, {kind = "target", wayPointId = marker.id})
|
|
||||||
row:getDescendantByName("title"):setText(" " .. tostring(marker.name))
|
|
||||||
row:getDescendantByName("option"):setState(chosen[marker.id] and SmartPickupFrame.STATE_ON or SmartPickupFrame.STATE_OFF, false)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Behovsrække pr. mål ("Cow 1 Food: Forage 0/33.750 l · …"), opdateres hvert sekund.
|
|
||||||
function SmartPickupFrame:fillNeedsRows(adEnv, run)
|
|
||||||
self.needsRows = {}
|
|
||||||
local targets = ADRunsController.getTargetsLevels(adEnv, run)
|
|
||||||
if #targets == 0 then
|
|
||||||
self:addTextRow(self.i18n:getText("spu_needs_noTarget"))
|
|
||||||
return
|
|
||||||
end
|
|
||||||
for _, target in ipairs(targets) do
|
|
||||||
table.insert(self.needsRows, {wayPointId = target.wayPointId, title = self:addTextRow(self:describeTargetNeeds(target))})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:describeTargetNeeds(target)
|
function SmartPickupFrame:describeTargetNeeds(target)
|
||||||
if #target.levels == 0 then
|
if #target.levels == 0 then
|
||||||
@@ -58,39 +24,8 @@ function SmartPickupFrame:refreshNeedsRows(adEnv, run)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function SmartPickupFrame:fillIngredientRows(adEnv, run)
|
|
||||||
if run.ingredientMode ~= "manual" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local chosen = {}
|
|
||||||
for _, name in ipairs(run.ingredients) do
|
|
||||||
chosen[name] = true
|
|
||||||
end
|
|
||||||
for _, fillType in ipairs(ADRunsController.getTargetAcceptedFillTypes(adEnv, run)) do
|
|
||||||
local row = self:addRow(self.ingredientPrefab, {kind = "ingredient", name = fillType.name})
|
|
||||||
row:getDescendantByName("title"):setText(tostring(fillType.title))
|
|
||||||
row:getDescendantByName("option"):setState(chosen[fillType.name] and SmartPickupFrame.STATE_ON or SmartPickupFrame.STATE_OFF, false)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:onClickTarget(state, element)
|
|
||||||
self:safe(function(frame)
|
|
||||||
local run, data = frame:getRun(), frame.rowData[element]
|
|
||||||
if run == nil or data == nil then return end
|
|
||||||
ADRunsController.store = ADRuns.toggleTarget(ADRunsController.store, run.id, data.wayPointId)
|
|
||||||
Logging.info(SmartPickupFrame.LOG_PREFIX .. "run '%s': targets=%s", tostring(run.name), table.concat(ADRunsController.getRunTargets(ADRuns.getRun(ADRunsController.store, run.id)), " "))
|
|
||||||
frame:requestRebuild()
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:onClickIngredientMode(state)
|
|
||||||
self:safe(function(frame)
|
|
||||||
local run = frame:getRun()
|
|
||||||
if run == nil then return end
|
|
||||||
ADRunsController.updateRun(run.id, {ingredientMode = state == SmartPickupFrame.STATE_ON and "manual" or "auto"})
|
|
||||||
frame:requestRebuild()
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function SmartPickupFrame:onClickLoops(state)
|
function SmartPickupFrame:onClickLoops(state)
|
||||||
self:safe(function(frame)
|
self:safe(function(frame)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.32.0.0</version>
|
<version>1.32.1.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
Reference in New Issue
Block a user