feat(inferium-gui): implement preparePayloads

This commit is contained in:
Guillaume ARM 2024-05-24 01:08:25 +02:00
parent 3ef5930f4f
commit 472415a59f

View File

@ -12,6 +12,10 @@ end
local function formatSeedName(essenceName)
if not essenceName then
return false
end
return 'mysticalagriculture:' .. essenceName .. '_seeds'
end
@ -125,6 +129,60 @@ local function createCountersMap(harvesters)
return getCountersMapFromIndexed(countersMapIndexed)
end
local function pickSeedNameFromCountersMap(countersMap)
local newCountersMap = {}
local pickedCounterName = nil
for k, counterPayload in pairs(countersMap) do
local count = counterPayload.count
local name = counterPayload.name
if not pickedCounterName and count > 0 then
pickedCounterName = name
count = count - 1
end
local newCounterPayload = {
count = count,
name = name
}
newCountersMap[k] = newCounterPayload
end
return formatSeedName(pickedCounterName), newCountersMap
end
local function preparePayloads(countersMap, maxCounter, harvesters)
local payloads = {}
local globalCounter = 1
local configIndex = 1
for _, harvester in pairs(harvesters) do
local newConfig = {}
payloads[configIndex] = { id = harvester.id, config = newConfig }
for k, _ in pairs(harvester.config.plan) do
local seedName, newCountersMaps = pickSeedNameFromCountersMap(countersMap)
countersMap = newCountersMaps
newConfig[k] = seedName
globalCounter = globalCounter + 1
if globalCounter > maxCounter then
error('preparePayload fatal error: globalCounter is greater than maxCounter')
end
end
configIndex = configIndex + 1
end
return payloads
end
local function saveAllConfigs(payloads)
-- TODO
return false, "not implemented"
end
local function main(serverName)
net.openRednet()
print('> fetching all configs from ' .. serverName)
@ -134,7 +192,18 @@ local function main(serverName)
local maxCounter = getMaxCounter(harvesters)
local countersMap = createCountersMap(harvesters)
local countersMapResult = CountersSelector(countersMap, getCountersSelectorConfig(maxCounter))
print(textutils.serialize(countersMapResult))
local payloads = preparePayloads(countersMapResult, maxCounter, harvesters)
print('> saving...')
local saveOk, saveErrMessage = saveAllConfigs(payloads)
if saveOk then
print('> done.')
else
error('Cannot save configs because: ' .. tostring(saveErrMessage), 0)
end
net.closeRednet()
end